From 0d4a76fbf06cd1576b53786b8d0cd1fc9f889446 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Sat, 27 Jun 2020 21:42:36 +0200 Subject: [PATCH] Propagate filter/entity errors properly to the table --- plugins/catalog/src/components/CatalogPage/CatalogTabs.tsx | 2 ++ plugins/catalog/src/filter/EntityFilterGroupsProvider.tsx | 2 ++ plugins/catalog/src/filter/context.ts | 2 ++ plugins/catalog/src/filter/useFilteredEntities.ts | 4 ++-- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/plugins/catalog/src/components/CatalogPage/CatalogTabs.tsx b/plugins/catalog/src/components/CatalogPage/CatalogTabs.tsx index cad05c4ef6..ae1e2a4e5a 100644 --- a/plugins/catalog/src/components/CatalogPage/CatalogTabs.tsx +++ b/plugins/catalog/src/components/CatalogPage/CatalogTabs.tsx @@ -61,10 +61,12 @@ export const CatalogTabs = ({ tabs, onChange }: Props) => { const [currentTabIndex, setCurrentTabIndex] = useState(0); + // Hold a reference to the callback const onChangeRef = useRef(); useEffect(() => { onChangeRef.current = onChange; }, [onChange]); + useEffect(() => { onChangeRef.current?.(tabs[currentTabIndex]); }, [tabs, currentTabIndex]); diff --git a/plugins/catalog/src/filter/EntityFilterGroupsProvider.tsx b/plugins/catalog/src/filter/EntityFilterGroupsProvider.tsx index e8c307ebf6..dd557a4322 100644 --- a/plugins/catalog/src/filter/EntityFilterGroupsProvider.tsx +++ b/plugins/catalog/src/filter/EntityFilterGroupsProvider.tsx @@ -113,6 +113,8 @@ function useProvideEntityFilters(): FilterGroupsContext { register, unregister, setGroupSelectedFilters, + loading: !error && !entities, + error, filterGroupStates, matchingEntities, }; diff --git a/plugins/catalog/src/filter/context.ts b/plugins/catalog/src/filter/context.ts index 0f51f11b9a..31e9c91b97 100644 --- a/plugins/catalog/src/filter/context.ts +++ b/plugins/catalog/src/filter/context.ts @@ -26,6 +26,8 @@ export type FilterGroupsContext = { ) => void; unregister: (filterGroupId: string) => void; setGroupSelectedFilters: (filterGroupId: string, filterIds: string[]) => void; + loading: boolean; + error?: Error; filterGroupStates: { [filterGroupId: string]: FilterGroupStates }; matchingEntities: Entity[]; }; diff --git a/plugins/catalog/src/filter/useFilteredEntities.ts b/plugins/catalog/src/filter/useFilteredEntities.ts index 3f3bd03858..256f5247c7 100644 --- a/plugins/catalog/src/filter/useFilteredEntities.ts +++ b/plugins/catalog/src/filter/useFilteredEntities.ts @@ -27,8 +27,8 @@ export function useFilteredEntities() { } return { - loading: false, - error: undefined, + loading: context.loading, + error: context.error, matchingEntities: context.matchingEntities, }; }