saleor-apps-redis_apl/apps/cms-v2/src/pages/edit-provider/[configId].tsx
Lukasz Ostrowski e8660e8bb9
Extract shared packages (#948)
* [skip ci] tRPC shared package

* [skip ci] tRPC shared package - fix

* [skip ci] shared package - app sections

* [skip ci] segment - implement shared components

* [skip ci] extract theme synchronizer

* extract components and implement them in apps

* cms - extract shared packages

* Fix imports

* remove urql from peer deps
2023-09-04 11:30:57 +02:00

68 lines
1.8 KiB
TypeScript

import { ProvidersResolver } from "@/modules/providers/providers-resolver";
import { trpcClient } from "@/modules/trpc/trpc-client";
import { AppHeader } from "@/modules/ui/app-header";
import { Breadcrumbs, Layout, SkeletonLayout } from "@saleor/apps-ui";
import { Box, Text } from "@saleor/macaw-ui/next";
import { NextPage } from "next";
import { useRouter } from "next/router";
import { useMemo } from "react";
const EditProviderPage: NextPage = () => {
const { push, query } = useRouter();
const configId = query["configId"] as string;
const { data, isLoading, isFetched } = trpcClient.providersConfigs.getOne.useQuery(
{
id: configId,
},
{
enabled: !!configId,
},
);
const provider = useMemo(() => {
return data ? ProvidersResolver.createProviderMeta(data.type) : null;
}, [data]);
if (isLoading) {
return <SkeletonLayout.Section />;
}
if (isFetched && !data) {
push("/404");
return null;
}
if (!provider) {
return <SkeletonLayout.Section />;
}
const EditForm = ProvidersResolver.getEditProviderFormComponent(provider.type);
return (
<Box>
<AppHeader
text={`Edit connected provider`}
breadcrumbs={[
<Breadcrumbs.Item key="editprovider">Edit Provider</Breadcrumbs.Item>,
<Breadcrumbs.Item key="displayname">{provider?.displayName}</Breadcrumbs.Item>,
<Breadcrumbs.Item key="configname">{data?.configName}</Breadcrumbs.Item>,
]}
/>
<Layout.AppSection
heading="Edit CMS configuration"
sideContent={
<Box>{provider.formSideInfo && <Box marginTop={6}>{provider.formSideInfo}</Box>}</Box>
}
>
<Layout.AppSectionCard>
<EditForm configId={configId} />
</Layout.AppSectionCard>
</Layout.AppSection>
</Box>
);
};
export default EditProviderPage;