From 6d2ae60b9eb91d71a7f7c1dbc7b59463ab59dab0 Mon Sep 17 00:00:00 2001 From: exception Date: Thu, 26 Oct 2023 09:59:18 -0300 Subject: [PATCH] chore: Stripe paid apps flow --- apps/web/components/apps/AppPage.tsx | 4 + .../components/apps/InstallAppButtonChild.tsx | 10 + apps/web/pages/apps/[slug]/index.tsx | 1 + packages/app-store/cal-ai/api/_getAdd.ts | 57 +- packages/app-store/cal-ai/api/_getCallback.ts | 71 + packages/app-store/cal-ai/api/callback.ts | 5 + packages/app-store/cal-ai/api/index.ts | 1 + packages/app-store/cal-ai/config.json | 6 +- packages/app-store/cal-ai/lib/stripe.ts | 74 + packages/app-store/cal-ai/package.json | 4 +- packages/types/App.d.ts | 9 + packages/ui/components/apps/AppCard.tsx | 17 + yarn.lock | 3692 +++++++++++++++-- 13 files changed, 3489 insertions(+), 462 deletions(-) create mode 100644 packages/app-store/cal-ai/api/_getCallback.ts create mode 100644 packages/app-store/cal-ai/api/callback.ts create mode 100644 packages/app-store/cal-ai/lib/stripe.ts diff --git a/apps/web/components/apps/AppPage.tsx b/apps/web/components/apps/AppPage.tsx index 05c095caa1..9099740202 100644 --- a/apps/web/components/apps/AppPage.tsx +++ b/apps/web/components/apps/AppPage.tsx @@ -42,6 +42,7 @@ export type AppPageProps = { disableInstall?: boolean; dependencies?: string[]; concurrentMeetings: AppType["concurrentMeetings"]; + paid?: AppType["paid"]; }; export const AppPage = ({ @@ -67,6 +68,7 @@ export const AppPage = ({ isTemplate, dependencies, concurrentMeetings, + paid, }: AppPageProps) => { const { t, i18n } = useLocale(); const hasDescriptionItems = descriptionItems && descriptionItems.length > 0; @@ -206,6 +208,7 @@ export const AppPage = ({ addAppMutationInput={{ type, variant, slug }} multiInstall concurrentMeetings={concurrentMeetings} + paid={paid} {...props} /> ); @@ -244,6 +247,7 @@ export const AppPage = ({ addAppMutationInput={{ type, variant, slug }} credentials={appDbQuery.data?.credentials} concurrentMeetings={concurrentMeetings} + paid={paid} {...props} /> ); diff --git a/apps/web/components/apps/InstallAppButtonChild.tsx b/apps/web/components/apps/InstallAppButtonChild.tsx index b6ec80ddca..d623377a38 100644 --- a/apps/web/components/apps/InstallAppButtonChild.tsx +++ b/apps/web/components/apps/InstallAppButtonChild.tsx @@ -26,6 +26,7 @@ export const InstallAppButtonChild = ({ multiInstall, credentials, concurrentMeetings, + paid, ...props }: { userAdminTeams?: UserAdminTeams; @@ -34,6 +35,7 @@ export const InstallAppButtonChild = ({ multiInstall?: boolean; credentials?: RouterOutputs["viewer"]["appCredentialsByType"]["credentials"]; concurrentMeetings?: boolean; + paid?: AppFrontendPayload["paid"]; } & ButtonProps) => { const { t } = useLocale(); @@ -48,6 +50,14 @@ export const InstallAppButtonChild = ({ }); if (!userAdminTeams?.length || !doesAppSupportTeamInstall(appCategories, concurrentMeetings)) { + if (paid) { + return ( + + ); + } + return ( + ); + } + return (