From 9803202e75df65c976a08c077fc6f7cebe98debd Mon Sep 17 00:00:00 2001 From: Dawid Date: Tue, 28 Feb 2023 14:20:17 +0100 Subject: [PATCH] Migrate app view to new-apps (#3161) --- src/apps/components/AppPage/index.ts | 1 - src/apps/index.tsx | 7 -- src/apps/views/App/index.ts | 1 - src/apps/views/AppSettings/AppSettings.tsx | 45 --------- src/components/Sidebar/menu/SingleItem.tsx | 2 +- .../Sidebar/menu/useMenuStructure.tsx | 8 +- src/components/Sidebar/menu/utils.ts | 2 +- .../CustomerDetailsPage.tsx | 10 +- .../CustomerListPage/CustomerListPage.tsx | 12 +-- src/index.tsx | 2 +- src/marketplace/index.tsx | 2 +- .../components/AppDialog/AppDialog.tsx | 36 +++++++ src/new-apps/components/AppDialog/index.ts | 1 + src/new-apps/components/AppDialog/styles.ts | 19 ++++ .../components/AppFrame/AppFrame.tsx | 10 +- .../AppFrame/appActionsHandler.test.ts | 4 +- .../components/AppFrame/appActionsHandler.ts | 4 +- .../components/AppFrame/index.ts | 0 .../components/AppFrame/styles.ts | 0 .../components/AppFrame/useAppActions.ts | 4 +- .../AppFrame/useAppDashboardUpdates.ts | 9 +- .../components/AppFrame/usePostToExtension.ts | 0 .../components/AppFrame/useTokenRefresh.ts | 0 .../components/AppPage/AppPage.stories.tsx | 0 .../components/AppPage/AppPage.tsx | 1 + src/new-apps/components/AppPage/index.ts | 2 + .../components/AppPage/styles.ts | 0 .../ExternalAppContext/ExternalAppContext.tsx | 0 .../components/ExternalAppContext/context.ts | 0 .../components/ExternalAppContext/index.ts | 0 src/new-apps/fixtures.ts | 36 +++++++ src/{apps => new-apps/hooks}/useExtensions.ts | 6 +- src/new-apps/index.tsx | 2 +- src/new-apps/messages.ts | 8 ++ src/new-apps/urls.test.ts | 49 ++++++++++ src/new-apps/urls.ts | 95 ++++++++++++++++++- .../views/AppView}/AppView.tsx | 10 +- src/new-apps/views/AppView/index.ts | 2 + .../OrderDetailsPage/OrderDetailsPage.tsx | 10 +- .../OrderListPage/OrderListPage.tsx | 10 +- .../ProductListPage/ProductListPage.tsx | 12 +-- .../ProductUpdatePage/ProductUpdatePage.tsx | 10 +- src/storybook/Decorator.tsx | 2 +- testUtils/wrapper.tsx | 2 +- 44 files changed, 315 insertions(+), 121 deletions(-) delete mode 100644 src/apps/components/AppPage/index.ts delete mode 100644 src/apps/views/App/index.ts delete mode 100644 src/apps/views/AppSettings/AppSettings.tsx create mode 100644 src/new-apps/components/AppDialog/AppDialog.tsx create mode 100644 src/new-apps/components/AppDialog/index.ts create mode 100644 src/new-apps/components/AppDialog/styles.ts rename src/{apps => new-apps}/components/AppFrame/AppFrame.tsx (91%) rename src/{apps => new-apps}/components/AppFrame/appActionsHandler.test.ts (97%) rename src/{apps => new-apps}/components/AppFrame/appActionsHandler.ts (96%) rename src/{apps => new-apps}/components/AppFrame/index.ts (100%) rename src/{apps => new-apps}/components/AppFrame/styles.ts (100%) rename src/{apps => new-apps}/components/AppFrame/useAppActions.ts (91%) rename src/{apps => new-apps}/components/AppFrame/useAppDashboardUpdates.ts (80%) rename src/{apps => new-apps}/components/AppFrame/usePostToExtension.ts (100%) rename src/{apps => new-apps}/components/AppFrame/useTokenRefresh.ts (100%) rename src/{apps => new-apps}/components/AppPage/AppPage.stories.tsx (100%) rename src/{apps => new-apps}/components/AppPage/AppPage.tsx (96%) create mode 100644 src/new-apps/components/AppPage/index.ts rename src/{apps => new-apps}/components/AppPage/styles.ts (100%) rename src/{apps => new-apps}/components/ExternalAppContext/ExternalAppContext.tsx (100%) rename src/{apps => new-apps}/components/ExternalAppContext/context.ts (100%) rename src/{apps => new-apps}/components/ExternalAppContext/index.ts (100%) rename src/{apps => new-apps/hooks}/useExtensions.ts (96%) rename src/{apps/views/App => new-apps/views/AppView}/AppView.tsx (80%) create mode 100644 src/new-apps/views/AppView/index.ts diff --git a/src/apps/components/AppPage/index.ts b/src/apps/components/AppPage/index.ts deleted file mode 100644 index 351021ad6..000000000 --- a/src/apps/components/AppPage/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./AppPage"; diff --git a/src/apps/index.tsx b/src/apps/index.tsx index 06936a2b5..b79496e37 100644 --- a/src/apps/index.tsx +++ b/src/apps/index.tsx @@ -12,10 +12,8 @@ import { appInstallPath, AppInstallUrlQueryParams, AppListUrlQueryParams, - appPath, appsListPath, } from "./urls"; -import { AppView } from "./views/App"; import AppDetailsView from "./views/AppDetails"; import AppInstallView from "./views/AppInstall"; import AppsListView from "./views/AppsList"; @@ -31,10 +29,6 @@ const AppDetails: React.FC> = ({ ); }; -const App: React.FC> = ({ match }) => ( - -); - const AppInstall: React.FC = props => { const qs = parseQs(location.search.substr(1)); const params: AppInstallUrlQueryParams = qs; @@ -58,7 +52,6 @@ const Component = () => { - diff --git a/src/apps/views/App/index.ts b/src/apps/views/App/index.ts deleted file mode 100644 index a7d580c35..000000000 --- a/src/apps/views/App/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./AppView"; diff --git a/src/apps/views/AppSettings/AppSettings.tsx b/src/apps/views/AppSettings/AppSettings.tsx deleted file mode 100644 index 37799e9f8..000000000 --- a/src/apps/views/AppSettings/AppSettings.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { appMessages } from "@dashboard/apps/messages"; -import NotFoundPage from "@dashboard/components/NotFoundPage"; -import { useAppQuery } from "@dashboard/graphql"; -import useNotifier from "@dashboard/hooks/useNotifier"; -import React from "react"; -import { useIntl } from "react-intl"; - -import { AppPage } from "../../components/AppPage"; -import { appsListPath } from "../../urls"; - -interface AppSettingsProps { - id: string; -} - -export const AppSettings: React.FC = ({ id }) => { - const { data, refetch } = useAppQuery({ - displayLoader: true, - variables: { id }, - }); - - const appExists = data?.app !== null; - - const notify = useNotifier(); - const intl = useIntl(); - - if (!appExists) { - return ; - } - - return ( - - notify({ - status: "error", - text: intl.formatMessage(appMessages.failedToFetchAppSettings), - }) - } - /> - ); -}; - -export default AppSettings; diff --git a/src/components/Sidebar/menu/SingleItem.tsx b/src/components/Sidebar/menu/SingleItem.tsx index 821c4ce28..fdafe5192 100644 --- a/src/components/Sidebar/menu/SingleItem.tsx +++ b/src/components/Sidebar/menu/SingleItem.tsx @@ -1,7 +1,7 @@ import { extensionMountPoints, useExtensions, -} from "@dashboard/apps/useExtensions"; +} from "@dashboard/new-apps/hooks/useExtensions"; import { Box, List, sprinkles, Text } from "@saleor/macaw-ui/next"; import React from "react"; import { Link } from "react-router-dom"; diff --git a/src/components/Sidebar/menu/useMenuStructure.tsx b/src/components/Sidebar/menu/useMenuStructure.tsx index a6d92fbdd..dadc56dc6 100644 --- a/src/components/Sidebar/menu/useMenuStructure.tsx +++ b/src/components/Sidebar/menu/useMenuStructure.tsx @@ -1,8 +1,4 @@ import { appsListPath } from "@dashboard/apps/urls"; -import { - extensionMountPoints, - useExtensions, -} from "@dashboard/apps/useExtensions"; import { useUser } from "@dashboard/auth"; import { categoryListUrl } from "@dashboard/categories/urls"; import { collectionListUrl } from "@dashboard/collections/urls"; @@ -15,6 +11,10 @@ import { giftCardListUrl } from "@dashboard/giftCards/urls"; import { PermissionEnum } from "@dashboard/graphql"; import { commonMessages, sectionNames } from "@dashboard/intl"; import { marketplaceUrlResolver } from "@dashboard/marketplace/marketplace-url-resolver"; +import { + extensionMountPoints, + useExtensions, +} from "@dashboard/new-apps/hooks/useExtensions"; import { orderDraftListUrl, orderListUrl } from "@dashboard/orders/urls"; import { pageListPath } from "@dashboard/pages/urls"; import { productListUrl } from "@dashboard/products/urls"; diff --git a/src/components/Sidebar/menu/utils.ts b/src/components/Sidebar/menu/utils.ts index 8048f3b80..1ddd68492 100644 --- a/src/components/Sidebar/menu/utils.ts +++ b/src/components/Sidebar/menu/utils.ts @@ -1,6 +1,6 @@ import { getDashboardUrFromAppCompleteUrl } from "@dashboard/apps/urls"; -import { Extension } from "@dashboard/apps/useExtensions"; import { AppExtensionMountEnum } from "@dashboard/graphql"; +import { Extension } from "@dashboard/new-apps/hooks/useExtensions"; import { orderDraftListUrl, orderListUrl } from "@dashboard/orders/urls"; import { matchPath } from "react-router"; diff --git a/src/customers/components/CustomerDetailsPage/CustomerDetailsPage.tsx b/src/customers/components/CustomerDetailsPage/CustomerDetailsPage.tsx index 6d034ea24..c0d94145f 100644 --- a/src/customers/components/CustomerDetailsPage/CustomerDetailsPage.tsx +++ b/src/customers/components/CustomerDetailsPage/CustomerDetailsPage.tsx @@ -1,8 +1,3 @@ -import { - extensionMountPoints, - mapToMenuItemsForCustomerDetails, - useExtensions, -} from "@dashboard/apps/useExtensions"; import { TopNav } from "@dashboard/components/AppLayout/TopNav"; import { Backlink } from "@dashboard/components/Backlink"; import CardMenu from "@dashboard/components/CardMenu/CardMenu"; @@ -26,6 +21,11 @@ import { import { SubmitPromise } from "@dashboard/hooks/useForm"; import useNavigator from "@dashboard/hooks/useNavigator"; import { sectionNames } from "@dashboard/intl"; +import { + extensionMountPoints, + mapToMenuItemsForCustomerDetails, + useExtensions, +} from "@dashboard/new-apps/hooks/useExtensions"; import { orderListUrl } from "@dashboard/orders/urls"; import { mapEdgesToItems, mapMetadataItemToInput } from "@dashboard/utils/maps"; import useMetadataChangeTrigger from "@dashboard/utils/metadata/useMetadataChangeTrigger"; diff --git a/src/customers/components/CustomerListPage/CustomerListPage.tsx b/src/customers/components/CustomerListPage/CustomerListPage.tsx index 1876f50af..05e631b36 100644 --- a/src/customers/components/CustomerListPage/CustomerListPage.tsx +++ b/src/customers/components/CustomerListPage/CustomerListPage.tsx @@ -1,9 +1,3 @@ -import { - extensionMountPoints, - mapToMenuItems, - mapToMenuItemsForCustomerOverviewActions, - useExtensions, -} from "@dashboard/apps/useExtensions"; import { useUserPermissions } from "@dashboard/auth/hooks/useUserPermissions"; import { TopNav } from "@dashboard/components/AppLayout/TopNav"; import ButtonWithSelect from "@dashboard/components/ButtonWithSelect"; @@ -16,6 +10,12 @@ import { import { ListCustomersQuery } from "@dashboard/graphql"; import useNavigator from "@dashboard/hooks/useNavigator"; import { sectionNames } from "@dashboard/intl"; +import { + extensionMountPoints, + mapToMenuItems, + mapToMenuItemsForCustomerOverviewActions, + useExtensions, +} from "@dashboard/new-apps/hooks/useExtensions"; import { FilterPageProps, ListActions, diff --git a/src/index.tsx b/src/index.tsx index 3cd795bdd..750f2bbaf 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -15,7 +15,6 @@ import TagManager from "react-gtm-module"; import { useIntl } from "react-intl"; import { BrowserRouter, Route, Switch } from "react-router-dom"; -import { ExternalAppProvider } from "./apps/components/ExternalAppContext"; import { useLocationState } from "./apps/hooks/useLocationState"; import AttributeSection from "./attributes"; import { attributeSection } from "./attributes/urls"; @@ -59,6 +58,7 @@ import { marketplaceUrl } from "./marketplace/urls"; import NavigationSection from "./navigation"; import { navigationSection } from "./navigation/urls"; import AppsSection from "./new-apps"; +import { ExternalAppProvider } from "./new-apps/components/ExternalAppContext"; import { AppSections } from "./new-apps/urls"; import { NotFound } from "./NotFound"; import OrdersSection from "./orders"; diff --git a/src/marketplace/index.tsx b/src/marketplace/index.tsx index 0da3150cc..791e6fc9c 100644 --- a/src/marketplace/index.tsx +++ b/src/marketplace/index.tsx @@ -1,4 +1,3 @@ -import { AppFrame } from "@dashboard/apps/components/AppFrame"; import NotFoundPage from "@dashboard/components/NotFoundPage"; import PreviewPill from "@dashboard/components/PreviewPill"; import { WindowTitle } from "@dashboard/components/WindowTitle"; @@ -7,6 +6,7 @@ import useNavigator from "@dashboard/hooks/useNavigator"; import { sectionNames } from "@dashboard/intl"; import { marketplaceUrlResolver } from "@dashboard/marketplace/marketplace-url-resolver"; import { marketplaceUrl } from "@dashboard/marketplace/urls"; +import { AppFrame } from "@dashboard/new-apps/components/AppFrame"; import { Container } from "@material-ui/core"; import React, { useMemo } from "react"; import { useIntl } from "react-intl"; diff --git a/src/new-apps/components/AppDialog/AppDialog.tsx b/src/new-apps/components/AppDialog/AppDialog.tsx new file mode 100644 index 000000000..d2cddc4a7 --- /dev/null +++ b/src/new-apps/components/AppDialog/AppDialog.tsx @@ -0,0 +1,36 @@ +import { + Dialog, + DialogContent, + DialogProps, + DialogTitle, + IconButton, + Typography, +} from "@material-ui/core"; +import CloseIcon from "@material-ui/icons/Close"; +import React from "react"; + +import { useStyles } from "./styles"; + +interface AppDialogProps extends DialogProps { + onClose: () => void; +} + +export const AppDialog: React.FC = ({ children, ...props }) => { + const classes = useStyles(); + + return ( + + + + {props.title} + + + + + + {children} + + ); +}; + +export default AppDialog; diff --git a/src/new-apps/components/AppDialog/index.ts b/src/new-apps/components/AppDialog/index.ts new file mode 100644 index 000000000..b23afc416 --- /dev/null +++ b/src/new-apps/components/AppDialog/index.ts @@ -0,0 +1 @@ +export * from "./AppDialog"; diff --git a/src/new-apps/components/AppDialog/styles.ts b/src/new-apps/components/AppDialog/styles.ts new file mode 100644 index 000000000..2066b06c9 --- /dev/null +++ b/src/new-apps/components/AppDialog/styles.ts @@ -0,0 +1,19 @@ +import { makeStyles } from "@saleor/macaw-ui"; + +export const useStyles = makeStyles( + () => ({ + header: { + display: "flex", + justifyContent: "space-between", + alignItems: "center", + }, + content: { + margin: 0, + padding: 0, + overflow: "hidden", + width: 600, + height: 600, + }, + }), + { name: "AppDialog" }, +); diff --git a/src/apps/components/AppFrame/AppFrame.tsx b/src/new-apps/components/AppFrame/AppFrame.tsx similarity index 91% rename from src/apps/components/AppFrame/AppFrame.tsx rename to src/new-apps/components/AppFrame/AppFrame.tsx index 9ff2a11b4..b917b09e0 100644 --- a/src/apps/components/AppFrame/AppFrame.tsx +++ b/src/new-apps/components/AppFrame/AppFrame.tsx @@ -1,10 +1,10 @@ -import { useAppDashboardUpdates } from "@dashboard/apps/components/AppFrame/useAppDashboardUpdates"; +import { useAllFlags } from "@dashboard/hooks/useFlags"; +import { useAppDashboardUpdates } from "@dashboard/new-apps/components/AppFrame/useAppDashboardUpdates"; import { AppDetailsUrlQueryParams, + AppUrls, prepareFeatureFlagsList, - resolveAppIframeUrl, -} from "@dashboard/apps/urls"; -import { useAllFlags } from "@dashboard/hooks/useFlags"; +} from "@dashboard/new-apps/urls"; import { CircularProgress } from "@material-ui/core"; import { useTheme } from "@saleor/macaw-ui"; import clsx from "clsx"; @@ -89,7 +89,7 @@ export const AppFrame: React.FC = ({