From f0b8479e5c6d9c5ffa30d867506569acc8e37ce2 Mon Sep 17 00:00:00 2001 From: "Hung-Han (Henry) Chen" Date: Tue, 5 Oct 2021 08:53:44 +0300 Subject: [PATCH] Add defaultProps.catalogEntityStore Signed-off-by: Hung-Han (Henry) Chen --- .../+catalog/catalog-entity.store.tsx | 18 +++++++++++++----- src/renderer/components/+catalog/catalog.tsx | 10 ++++++++-- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/renderer/components/+catalog/catalog-entity.store.tsx b/src/renderer/components/+catalog/catalog-entity.store.tsx index f4e7ae88fc..030b74a4aa 100644 --- a/src/renderer/components/+catalog/catalog-entity.store.tsx +++ b/src/renderer/components/+catalog/catalog-entity.store.tsx @@ -20,7 +20,7 @@ */ import { computed, IReactionDisposer, makeObservable, observable, reaction } from "mobx"; -import { catalogEntityRegistry } from "../../api/catalog-entity-registry"; +import { catalogEntityRegistry as _catalogEntityRegistry, CatalogEntityRegistry } from "../../api/catalog-entity-registry"; import type { CatalogEntity } from "../../api/catalog-entity"; import type { CatalogEntityOnRunHook } from "../../api/catalog-entity-registry"; import { ItemStore } from "../../../common/item.store"; @@ -29,10 +29,18 @@ import { autoBind } from "../../../common/utils"; import { CatalogEntityItem } from "./catalog-entity-item"; export class CatalogEntityStore extends ItemStore> { - constructor() { + #catalogEntityRegistry: CatalogEntityRegistry; + + constructor(catalogEntityRegistry?: CatalogEntityRegistry) { super(); makeObservable(this); autoBind(this); + + if (catalogEntityRegistry) { + this.#catalogEntityRegistry = catalogEntityRegistry; + } else { + this.#catalogEntityRegistry = _catalogEntityRegistry; + } } @observable activeCategory?: CatalogCategory; @@ -40,10 +48,10 @@ export class CatalogEntityStore extends ItemStore new CatalogEntityItem(entity)); + return this.#catalogEntityRegistry.filteredItems.map(entity => new CatalogEntityItem(entity)); } - return catalogEntityRegistry.getItemsForCategory(this.activeCategory, { filtered: true }).map(entity => new CatalogEntityItem(entity)); + return this.#catalogEntityRegistry.getItemsForCategory(this.activeCategory, { filtered: true }).map(entity => new CatalogEntityItem(entity)); } @computed get selectedItem() { @@ -51,7 +59,7 @@ export class CatalogEntityStore extends ItemStore {} +interface Props extends RouteComponentProps { + catalogEntityStore: CatalogEntityStore; +} + @observer export class Catalog extends React.Component { @observable private catalogEntityStore?: CatalogEntityStore; @@ -66,8 +69,11 @@ export class Catalog extends React.Component { constructor(props: Props) { super(props); makeObservable(this); - this.catalogEntityStore = new CatalogEntityStore(); + this.catalogEntityStore = props.catalogEntityStore; } + static defaultProps = { + catalogEntityStore: new CatalogEntityStore(), + }; get routeActiveTab(): string { const { group, kind } = this.props.match.params ?? {};