From a7c68db90e91735f95c3c4e1c8254fd9fae6cef3 Mon Sep 17 00:00:00 2001 From: Henry Date: Mon, 1 Sep 2025 22:17:09 +0100 Subject: [PATCH] feat: setup subscriptions --- apps/web/package.json | 2 +- .../members/components/InviteMemberForm.tsx | 24 +- package.json | 8 +- packages/api/src/routers/member.ts | 13 + packages/api/src/trpc.ts | 7 + packages/auth/package.json | 3 +- packages/auth/src/auth.ts | 27 + packages/auth/src/client.ts | 4 + ...0250901201309_concerned_doctor_octopus.sql | 23 + .../meta/20250901201309_snapshot.json | 2536 ++++++ packages/db/migrations/meta/_journal.json | 7 + packages/db/src/client.ts | 11 +- packages/db/src/schema/index.ts | 1 + packages/db/src/schema/subscriptions.ts | 38 + packages/stripe/src/index.ts | 3 +- pnpm-lock.yaml | 6783 ++++++++--------- 16 files changed, 6045 insertions(+), 3445 deletions(-) create mode 100644 packages/db/migrations/20250901201309_concerned_doctor_octopus.sql create mode 100644 packages/db/migrations/meta/20250901201309_snapshot.json create mode 100644 packages/db/src/schema/subscriptions.ts diff --git a/apps/web/package.json b/apps/web/package.json index 72310484..6c735fc4 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -6,7 +6,7 @@ "scripts": { "build": "pnpm with-env next build", "clean": "git clean -xdf .cache .next .turbo node_modules", - "dev": "pnpm with-env next dev | pino-pretty", + "dev": "pnpm with-env next dev", "format": "prettier --check . --ignore-path ../../.gitignore", "lint": "eslint", "start": "pnpm with-env next start", diff --git a/apps/web/src/views/members/components/InviteMemberForm.tsx b/apps/web/src/views/members/components/InviteMemberForm.tsx index e9cc6b63..de95eb10 100644 --- a/apps/web/src/views/members/components/InviteMemberForm.tsx +++ b/apps/web/src/views/members/components/InviteMemberForm.tsx @@ -42,7 +42,7 @@ export function InviteMemberForm() { const refetchBoards = () => utils.board.all.refetch(); - const createBoard = api.member.invite.useMutation({ + const inviteMember = api.member.invite.useMutation({ onSuccess: async () => { closeModal(); await utils.workspace.byId.refetch(); @@ -68,8 +68,24 @@ export function InviteMemberForm() { }, }); - const onSubmit = (data: InviteMemberInput) => { - createBoard.mutate(data); + const onSubmit = async (_data: InviteMemberInput) => { + const { data, error } = await authClient.subscription.upgrade({ + plan: "team", + // subscriptionId: "sub_123", + metadata: { userId: "123" }, + seats: 1, + successUrl: "/members", + cancelUrl: "/members", + returnUrl: "/members", + disableRedirect: true, + }); + + if (data?.url) { + window.location.href = data.url; + } + + // console.log(data, error); + // inviteMember.mutate(data); }; useEffect(() => { @@ -117,7 +133,7 @@ export function InviteMemberForm() {