From d09427f1c197c34c2fc54f5e70bf1c87aacb3d72 Mon Sep 17 00:00:00 2001 From: Sidney Alcantara Date: Thu, 2 Sep 2021 23:39:53 +1000 Subject: [PATCH] move ProjectSettings to own page, add MigrateToV2 --- src/App.tsx | 41 +++- src/assets/icons/ProjectSettings.tsx | 10 - src/components/Auth/FirebaseUi.tsx | 21 +- src/components/BuilderInstaller.tsx | 67 ------ .../ConfirmationDialog/Provider.tsx | 2 +- src/components/HomeWelcomePrompt.tsx | 8 +- src/components/Navigation/NavDrawer.tsx | 32 ++- src/components/Navigation/UpdateChecker.tsx | 131 ----------- src/components/Navigation/UserMenu.tsx | 68 ++---- src/components/Navigation/index.tsx | 36 ++- src/components/ProjectSettings/form.tsx | 74 ------- src/components/ProjectSettings/index.tsx | 62 ------ src/components/Settings/MigrateToV2.tsx | 205 +++++++++++++++++ .../Settings/ProjectSettings/About.tsx | 208 ++++++++++++++++++ .../ProjectSettings/Authentication.tsx | 54 +++++ .../ProjectSettings/FunctionsBuilder.tsx | 81 +++++++ src/components/Settings/SettingsSection.tsx | 36 +++ src/components/Settings/SettingsSkeleton.tsx | 59 +++++ .../Table/ColumnMenu/FieldSettings/index.tsx | 22 +- .../Table/TableHeader/Extensions/index.tsx | 3 +- .../Table/TableHeader/TableLogs.tsx | 17 +- src/components/TableSettings/index.tsx | 5 +- .../fields/ConnectTable/Settings.tsx | 3 +- src/config/dbPaths.ts | 7 + src/constants/routes.ts | 1 + src/contexts/AppContext.tsx | 3 +- src/hooks/useDoc.ts | 23 +- src/hooks/useSettings.ts | 27 ++- src/pages/Home.tsx | 184 +++++++--------- src/pages/Settings/ProjectSettings.tsx | 98 ++++++++- src/pages/Settings/UserManagement.tsx | 13 ++ src/pages/Settings/UserSettings.tsx | 16 +- src/pages/Table.tsx | 6 +- src/theme/components.tsx | 9 +- src/theme/typography.ts | 5 + src/utils/fns.ts | 20 +- 36 files changed, 1048 insertions(+), 609 deletions(-) delete mode 100644 src/assets/icons/ProjectSettings.tsx delete mode 100644 src/components/BuilderInstaller.tsx delete mode 100644 src/components/Navigation/UpdateChecker.tsx delete mode 100644 src/components/ProjectSettings/form.tsx delete mode 100644 src/components/ProjectSettings/index.tsx create mode 100644 src/components/Settings/MigrateToV2.tsx create mode 100644 src/components/Settings/ProjectSettings/About.tsx create mode 100644 src/components/Settings/ProjectSettings/Authentication.tsx create mode 100644 src/components/Settings/ProjectSettings/FunctionsBuilder.tsx create mode 100644 src/components/Settings/SettingsSection.tsx create mode 100644 src/components/Settings/SettingsSkeleton.tsx create mode 100644 src/config/dbPaths.ts create mode 100644 src/pages/Settings/UserManagement.tsx diff --git a/src/App.tsx b/src/App.tsx index 596e3a97..fd3a62ec 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -10,6 +10,9 @@ import PrivateRoute from "utils/PrivateRoute"; import ErrorBoundary from "components/ErrorBoundary"; import EmptyState from "components/EmptyState"; import Loading from "components/Loading"; +import Navigation from "components/Navigation"; +import Logo from "assets/Logo"; +import MigrateToV2 from "components/Settings/MigrateToV2"; import { SnackProvider } from "contexts/SnackContext"; import ConfirmationProvider from "components/ConfirmationDialog/Provider"; @@ -41,6 +44,8 @@ const TablePage = lazy(() => import("./pages/Table" /* webpackChunkName: "TableP const ProjectSettingsPage = lazy(() => import("./pages/Settings/ProjectSettings" /* webpackChunkName: "ProjectSettingsPage" */)); // prettier-ignore const UserSettingsPage = lazy(() => import("./pages/Settings/UserSettings" /* webpackChunkName: "UserSettingsPage" */)); +// prettier-ignore +const UserManagementPage = lazy(() => import("./pages/Settings/UserManagement" /* webpackChunkName: "UserManagementPage" */)); export default function App() { return ( @@ -92,6 +97,7 @@ export default function App() { routes.settings, routes.projectSettings, routes.userSettings, + routes.userManagement, ]} render={() => ( @@ -99,7 +105,17 @@ export default function App() { } + render={() => ( + + + + } + > + + + )} /> } + render={() => ( + + + + )} /> } + render={() => ( + + + + )} + /> + ( + + + + )} /> + + )} /> diff --git a/src/assets/icons/ProjectSettings.tsx b/src/assets/icons/ProjectSettings.tsx deleted file mode 100644 index 0eb37ec6..00000000 --- a/src/assets/icons/ProjectSettings.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import SvgIcon, { SvgIconProps } from "@material-ui/core/SvgIcon"; -import { mdiWrenchOutline } from "@mdi/js"; - -export default function ProjectSettings(props: SvgIconProps) { - return ( - - - - ); -} diff --git a/src/components/Auth/FirebaseUi.tsx b/src/components/Auth/FirebaseUi.tsx index 7ab4243b..3548ac1a 100644 --- a/src/components/Auth/FirebaseUi.tsx +++ b/src/components/Auth/FirebaseUi.tsx @@ -9,8 +9,9 @@ import { Typography } from "@material-ui/core"; import { alpha } from "@material-ui/core/styles"; import Skeleton from "@material-ui/core/Skeleton"; -import { auth, db } from "../../firebase"; -import { defaultUiConfig, getSignInOptions } from "../../firebase/firebaseui"; +import { auth, db } from "@src/firebase"; +import { defaultUiConfig, getSignInOptions } from "@src/firebase/firebaseui"; +import { PUBLIC_SETTINGS } from "config/dbPaths"; const useStyles = makeStyles((theme) => createStyles({ @@ -47,9 +48,10 @@ const useStyles = makeStyles((theme) => "& .firebaseui-card-content, & .firebaseui-card-footer": { padding: 0 }, "& .firebaseui-idp-list, & .firebaseui-tenant-list": { margin: 0 }, - "& .firebaseui-idp-list>.firebaseui-list-item, & .firebaseui-tenant-list>.firebaseui-list-item": { - margin: 0, - }, + "& .firebaseui-idp-list>.firebaseui-list-item, & .firebaseui-tenant-list>.firebaseui-list-item": + { + margin: 0, + }, "& .firebaseui-list-item + .firebaseui-list-item": { paddingTop: theme.spacing(2), }, @@ -135,9 +137,10 @@ const useStyles = makeStyles((theme) => ...theme.typography.subtitle2, color: theme.palette.text.secondary, }, - "& .mdl-textfield--floating-label.is-dirty .mdl-textfield__label, .mdl-textfield--floating-label.is-focused .mdl-textfield__label": { - color: theme.palette.text.primary, - }, + "& .mdl-textfield--floating-label.is-dirty .mdl-textfield__label, .mdl-textfield--floating-label.is-focused .mdl-textfield__label": + { + color: theme.palette.text.primary, + }, "& .firebaseui-textfield.mdl-textfield .firebaseui-label:after": { backgroundColor: theme.palette.primary.main, }, @@ -186,7 +189,7 @@ export default function FirebaseUi(props: Partial) { Parameters[0] | undefined >(); useEffect(() => { - db.doc("/_rowy_/publicSettings") + db.doc(PUBLIC_SETTINGS) .get() .then((doc) => { const options = doc?.get("signInOptions"); diff --git a/src/components/BuilderInstaller.tsx b/src/components/BuilderInstaller.tsx deleted file mode 100644 index 64ae93ad..00000000 --- a/src/components/BuilderInstaller.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import useDoc from "hooks/useDoc"; -import Modal from "components/Modal"; -import { Box, CircularProgress, Typography } from "@material-ui/core"; -import { IFormDialogProps } from "./Table/ColumnMenu/NewColumn"; -import CheckCircleIcon from "@material-ui/icons/CheckCircle"; - -export interface IProjectSettings - extends Pick {} - -export default function BuilderInstaller({ handleClose }: IProjectSettings) { - const [settingsState] = useDoc({ - path: "_rowy_/settings", - }); - - if (settingsState.loading) return null; - - const complete = - settingsState.doc.buildStatus === "COMPLETE" || - !!settingsState.doc.buildUrl; - const building = settingsState.doc.buildStatus === "BUILDING"; - const waiting = !settingsState.doc.buildStatus && !settingsState.doc.buildUrl; - - return ( - - - You will be redirected to Google Cloud Shell to deploy Function - Builder to Cloud Run. - -
- - - {complete && ( - <> - - Deploy Complete - - )} - {building && ( - <> - - Deploying... - - )} - {waiting && ( - <> - - - Waiting for deploy... - - - )} - - - } - /> - ); -} diff --git a/src/components/ConfirmationDialog/Provider.tsx b/src/components/ConfirmationDialog/Provider.tsx index 0d43afd2..80786606 100644 --- a/src/components/ConfirmationDialog/Provider.tsx +++ b/src/components/ConfirmationDialog/Provider.tsx @@ -13,8 +13,8 @@ const ConfirmationProvider: React.FC = ({ const [state, setState] = useState(); const [open, setOpen] = useState(false); const handleClose = () => { - setState(undefined); setOpen(false); + setTimeout(() => setState(undefined), 300); }; const requestConfirmation = (props: confirmationProps) => { setState(props); diff --git a/src/components/HomeWelcomePrompt.tsx b/src/components/HomeWelcomePrompt.tsx index a2d9fbfe..a16b2f1f 100644 --- a/src/components/HomeWelcomePrompt.tsx +++ b/src/components/HomeWelcomePrompt.tsx @@ -2,7 +2,13 @@ import { Zoom, Stack, Typography } from "@material-ui/core"; export default function HomeWelcomePrompt() { return ( - + props.onClose(e, "escapeKeyDown"); @@ -65,7 +67,12 @@ export default function NavDrawer({