From 406739d96d2ea5ebad9685ca5135be2d2f103014 Mon Sep 17 00:00:00 2001 From: giancarlo Date: Wed, 3 Apr 2024 22:34:12 +0800 Subject: [PATCH] Refactor Supabase server client and improve team management features Refactored Supabase server component client to improve type safety. Improved team account management by adjusting role data providers to consider account IDs, and adjusted invite member functionality to use account IDs and slugs. Enhanced invitation update dialog by adding account parameter. Fixed database webhook URLs in seed.sql. Overall, these changes enhance the robustness and usability of the team management functionalities. --- .../home/[account]/billing/page.tsx | 57 +- .../home/[account]/members/page.tsx | 4 +- .../app/api/{database => db}/webhook/route.ts | 0 .../invitations/account-invitations-table.tsx | 1 + .../invitations/update-invitation-dialog.tsx | 23 +- .../invite-members-dialog-container.tsx | 13 +- .../members/roles-data-provider.tsx | 9 +- .../members/update-member-role-dialog.tsx | 5 +- .../team-invitations-server-actions.ts | 7 +- .../services/account-invitations.service.ts | 12 +- .../src/clients/server-component.client.ts | 6 +- packages/supabase/src/database.types.ts | 1866 ++++++++--------- supabase/migrations/20221215192558_schema.sql | 63 +- supabase/seed.sql | 8 +- 14 files changed, 1074 insertions(+), 1000 deletions(-) rename apps/web/app/api/{database => db}/webhook/route.ts (100%) diff --git a/apps/web/app/(dashboard)/home/[account]/billing/page.tsx b/apps/web/app/(dashboard)/home/[account]/billing/page.tsx index 396f28fd6..e33b7f0c4 100644 --- a/apps/web/app/(dashboard)/home/[account]/billing/page.tsx +++ b/apps/web/app/(dashboard)/home/[account]/billing/page.tsx @@ -1,3 +1,5 @@ +import { ExclamationTriangleIcon } from '@radix-ui/react-icons'; + import { BillingPortalCard, CurrentSubscriptionCard, @@ -39,6 +41,31 @@ async function TeamAccountBillingPage({ params }: Params) { const canManageBilling = workspace.account.permissions.includes('billing.manage'); + const Checkout = () => { + if (!canManageBilling) { + return ; + } + + return ( + + ); + }; + + const BillingPortal = () => { + if (!canManageBilling || !customerId) { + return null; + } + + return ( +
+ + + + + + ); + }; + return ( <>
- - - -
- - + <> + + } > - {(data) => ( + {(subscription) => ( )} - -
- - - - - -
+
@@ -93,7 +106,9 @@ export default withI18n(TeamAccountBillingPage); function CannotManageBillingAlert() { return ( - + + + diff --git a/apps/web/app/(dashboard)/home/[account]/members/page.tsx b/apps/web/app/(dashboard)/home/[account]/members/page.tsx index 4a492b51c..6a0160faa 100644 --- a/apps/web/app/(dashboard)/home/[account]/members/page.tsx +++ b/apps/web/app/(dashboard)/home/[account]/members/page.tsx @@ -131,10 +131,12 @@ async function TeamAccountMembersPage({ params }: Params) {