From 84f838d3a11314494c26c623fe420784af94a037 Mon Sep 17 00:00:00 2001 From: gbuomprisco Date: Mon, 22 Jul 2024 19:14:48 +0200 Subject: [PATCH] Add feature flag for team account deletion Updated the team account settings page to support a new feature flag for enabling team deletion. Only the primary user can delete the account if this feature is enabled. Also, corrected the required error message in feature-flags.config.ts file for more clarity. --- apps/web/app/home/[account]/settings/page.tsx | 11 ++++++++++- apps/web/config/feature-flags.config.ts | 2 +- .../components/settings/team-account-danger-zone.tsx | 7 ++++++- .../settings/team-account-settings-container.tsx | 5 +++++ 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/apps/web/app/home/[account]/settings/page.tsx b/apps/web/app/home/[account]/settings/page.tsx index 5f4c41612..f81a7de7d 100644 --- a/apps/web/app/home/[account]/settings/page.tsx +++ b/apps/web/app/home/[account]/settings/page.tsx @@ -4,6 +4,7 @@ import { TeamAccountSettingsContainer } from '@kit/team-accounts/components'; import { PageBody } from '@kit/ui/page'; import { Trans } from '@kit/ui/trans'; +import featuresFlagConfig from '~/config/feature-flags.config'; import pathsConfig from '~/config/paths.config'; import { createI18nServerInstance } from '~/lib/i18n/i18n.server'; @@ -41,6 +42,10 @@ async function TeamAccountSettingsPage(props: Props) { primaryOwnerUserId: data.primary_owner_user_id, }; + const features = { + enableTeamDeletion: featuresFlagConfig.enableTeamDeletion, + }; + return ( <>
- +
diff --git a/apps/web/config/feature-flags.config.ts b/apps/web/config/feature-flags.config.ts index ea0a50574..60a9eb8cc 100644 --- a/apps/web/config/feature-flags.config.ts +++ b/apps/web/config/feature-flags.config.ts @@ -14,7 +14,7 @@ const FeatureFlagsSchema = z.object({ }), enableTeamDeletion: z.boolean({ description: 'Enable team deletion.', - required_error: 'Provide the variable NEXT_PUBLIC_ENABLE_TEAM_DELETION', + required_error: 'Provide the variable NEXT_PUBLIC_ENABLE_TEAM_ACCOUNTS_DELETION', }), enableTeamAccounts: z.boolean({ description: 'Enable team accounts.', diff --git a/packages/features/team-accounts/src/components/settings/team-account-danger-zone.tsx b/packages/features/team-accounts/src/components/settings/team-account-danger-zone.tsx index 1bbc06bfb..923995aa9 100644 --- a/packages/features/team-accounts/src/components/settings/team-account-danger-zone.tsx +++ b/packages/features/team-accounts/src/components/settings/team-account-danger-zone.tsx @@ -39,12 +39,17 @@ import { leaveTeamAccountAction } from '../../server/actions/leave-team-account- export function TeamAccountDangerZone({ account, primaryOwnerUserId, + features, }: React.PropsWithChildren<{ account: { name: string; id: string; }; + features: { + enableTeamDeletion: boolean; + }; + primaryOwnerUserId: string; }>) { const { data: user } = useUser(); @@ -56,7 +61,7 @@ export function TeamAccountDangerZone({ // Only the primary owner can delete the team account const userIsPrimaryOwner = user.id === primaryOwnerUserId; - if (userIsPrimaryOwner) { + if (userIsPrimaryOwner && features.enableTeamDeletion) { return ; } diff --git a/packages/features/team-accounts/src/components/settings/team-account-settings-container.tsx b/packages/features/team-accounts/src/components/settings/team-account-settings-container.tsx index 819be37ad..199da27c6 100644 --- a/packages/features/team-accounts/src/components/settings/team-account-settings-container.tsx +++ b/packages/features/team-accounts/src/components/settings/team-account-settings-container.tsx @@ -25,6 +25,10 @@ export function TeamAccountSettingsContainer(props: { paths: { teamAccountSettings: string; }; + + features: { + enableTeamDeletion: boolean; + } }) { return (
@@ -78,6 +82,7 @@ export function TeamAccountSettingsContainer(props: {