From 94c227cdd7dfa6f04096c1a8f4785fe6d614a151 Mon Sep 17 00:00:00 2001 From: Sidney Alcantara Date: Thu, 9 Jun 2022 15:22:14 +1000 Subject: [PATCH] support sub-tables with nested routes & jotai scoped providers --- src/App.tsx | 15 +- src/components/ErrorFallback.tsx | 8 +- src/components/Modal/Modal.tsx | 6 +- src/components/TableToolbar/TableSettings.tsx | 2 +- src/components/fields/SubTable/utils.ts | 28 +-- src/constants/routes.tsx | 6 + src/pages/Table/ProvidedSubTablePage.tsx | 127 ++++++++++ src/pages/Table/ProvidedTablePage.tsx | 70 ++++++ src/pages/{ => Table}/TablePage.tsx | 107 ++++---- src/sources/TableSourceFirestore.tsx | 237 ------------------ .../TableSourceFirestore.tsx | 84 +++++++ .../handleFirestoreError.tsx | 48 ++++ src/sources/TableSourceFirestore/index.ts | 2 + .../TableSourceFirestore/useAuditChange.ts | 63 +++++ .../TableSourceFirestore/useBulkWriteDb.ts | 65 +++++ src/sources/UserManagementSourceFirebase.tsx | 3 + 16 files changed, 550 insertions(+), 321 deletions(-) create mode 100644 src/pages/Table/ProvidedSubTablePage.tsx create mode 100644 src/pages/Table/ProvidedTablePage.tsx rename src/pages/{ => Table}/TablePage.tsx (55%) delete mode 100644 src/sources/TableSourceFirestore.tsx create mode 100644 src/sources/TableSourceFirestore/TableSourceFirestore.tsx create mode 100644 src/sources/TableSourceFirestore/handleFirestoreError.tsx create mode 100644 src/sources/TableSourceFirestore/index.ts create mode 100644 src/sources/TableSourceFirestore/useAuditChange.ts create mode 100644 src/sources/TableSourceFirestore/useBulkWriteDb.ts diff --git a/src/App.tsx b/src/App.tsx index 2279ab0e..a01d155f 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -41,7 +41,9 @@ const TableSettingsDialog = lazy(() => import("@src/components/TableSettingsDial // prettier-ignore const TablesPage = lazy(() => import("@src/pages/TablesPage" /* webpackChunkName: "TablesPage" */)); // prettier-ignore -const TablePage = lazy(() => import("@src/pages/TablePage" /* webpackChunkName: "TablePage" */)); +const ProvidedTablePage = lazy(() => import("@src/pages/Table/ProvidedTablePage" /* webpackChunkName: "ProvidedTablePage" */)); +// prettier-ignore +const ProvidedSubTablePage = lazy(() => import("@src/pages/Table/ProvidedSubTablePage" /* webpackChunkName: "ProvidedSubTablePage" */)); // prettier-ignore const FunctionPage = lazy(() => import("@src/pages/FunctionPage" /* webpackChunkName: "FunctionPage" */)); @@ -105,8 +107,17 @@ export default function App() { } /> - } /> + }> + + } /> + } + /> + + + } /> } /> diff --git a/src/components/ErrorFallback.tsx b/src/components/ErrorFallback.tsx index 06f8de78..93764d63 100644 --- a/src/components/ErrorFallback.tsx +++ b/src/components/ErrorFallback.tsx @@ -10,10 +10,11 @@ import { Tables as TablesIcon } from "@src/assets/icons"; import EmptyState, { IEmptyStateProps } from "@src/components/EmptyState"; import AccessDenied from "@src/components/AccessDenied"; -import { ERROR_TABLE_NOT_FOUND } from "@src/sources/TableSourceFirestore"; import { ROUTES } from "@src/constants/routes"; import meta from "@root/package.json"; +export const ERROR_TABLE_NOT_FOUND = "Table not found"; + export interface IErrorFallbackProps extends FallbackProps, IEmptyStateProps {} export default function ErrorFallback({ @@ -54,12 +55,13 @@ export default function ErrorFallback({ ), }; - if (error.message === ERROR_TABLE_NOT_FOUND) { + if (error.message.startsWith(ERROR_TABLE_NOT_FOUND)) { renderProps = { - message: "Table not found", + message: ERROR_TABLE_NOT_FOUND, description: ( <> Make sure you have the right ID + {error.message.replace(ERROR_TABLE_NOT_FOUND + ": ", "")}