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.
This commit is contained in:
gbuomprisco
2024-07-22 19:14:48 +02:00
parent 5eefa7ff16
commit 84f838d3a1
4 changed files with 22 additions and 3 deletions

View File

@@ -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 (
<>
<TeamAccountLayoutPageHeader
@@ -51,7 +56,11 @@ async function TeamAccountSettingsPage(props: Props) {
<PageBody>
<div className={'flex max-w-2xl flex-1 flex-col'}>
<TeamAccountSettingsContainer account={account} paths={paths} />
<TeamAccountSettingsContainer
account={account}
paths={paths}
features={features}
/>
</div>
</PageBody>
</>

View File

@@ -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.',

View File

@@ -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 <DeleteTeamContainer account={account} />;
}

View File

@@ -25,6 +25,10 @@ export function TeamAccountSettingsContainer(props: {
paths: {
teamAccountSettings: string;
};
features: {
enableTeamDeletion: boolean;
}
}) {
return (
<div className={'flex w-full flex-col space-y-6'}>
@@ -78,6 +82,7 @@ export function TeamAccountSettingsContainer(props: {
<TeamAccountDangerZone
primaryOwnerUserId={props.account.primaryOwnerUserId}
account={props.account}
features={props.features}
/>
</CardContent>
</Card>