Remove team account related services and actions

Removed services and actions related to team account deletion as well as updated paths within other dependent files, better reflecting their new locations. Also, added a new service titled 'AccountBillingService' for handling billing-related operations and restructured the form layout and handled translation in 'team-account-danger-zone' component.
This commit is contained in:
giancarlo
2024-03-28 15:27:56 +08:00
parent 3ac4d3b00d
commit 041efb89fb
77 changed files with 1998 additions and 1553 deletions

View File

@@ -18,8 +18,8 @@ import { If } from '@kit/ui/if';
import { Input } from '@kit/ui/input';
import { ProfileAvatar } from '@kit/ui/profile-avatar';
import { RoleBadge } from '../role-badge';
import { RemoveMemberDialog } from './remove-member-dialog';
import { RoleBadge } from './role-badge';
import { TransferOwnershipDialog } from './transfer-ownership-dialog';
import { UpdateMemberRoleDialog } from './update-member-role-dialog';

View File

@@ -33,9 +33,9 @@ import {
} from '@kit/ui/tooltip';
import { Trans } from '@kit/ui/trans';
import { createInvitationsAction } from '../../actions/account-invitations-server-actions';
import { InviteMembersSchema } from '../../schema/invite-members.schema';
import { MembershipRoleSelector } from '../membership-role-selector';
import { createInvitationsAction } from '../../server/actions/team-invitations-server-actions';
import { MembershipRoleSelector } from './membership-role-selector';
type InviteModel = ReturnType<typeof createEmptyInviteModel>;
@@ -59,8 +59,7 @@ export function InviteMembersDialogContainer({
<DialogTitle>Invite Members to Organization</DialogTitle>
<DialogDescription>
Invite members to your organization by entering their email and
role.
Invite members to your team by entering their email and role.
</DialogDescription>
</DialogHeader>
@@ -89,7 +88,7 @@ function InviteMembersForm({
onSubmit: (data: { invitations: InviteModel[] }) => void;
pending: boolean;
}) {
const { t } = useTranslation('organization');
const { t } = useTranslation('team');
const form = useForm({
resolver: zodResolver(InviteMembersSchema),

View File

@@ -0,0 +1,44 @@
import { Database } from '@kit/supabase/database';
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from '@kit/ui/select';
import { Trans } from '@kit/ui/trans';
type Role = Database['public']['Enums']['account_role'];
export const MembershipRoleSelector: React.FC<{
value: Role;
currentUserRole?: Role;
onChange: (role: Role) => unknown;
}> = ({ value, currentUserRole, onChange }) => {
const rolesList: Role[] = ['owner', 'member'];
return (
<Select value={value} onValueChange={onChange}>
<SelectTrigger data-test={'role-selector-trigger'}>
<SelectValue />
</SelectTrigger>
<SelectContent>
{rolesList.map((role) => {
return (
<SelectItem
key={role}
data-test={`role-item-${role}`}
disabled={currentUserRole && currentUserRole === role}
value={role}
>
<span className={'text-sm capitalize'}>
<Trans i18nKey={`common.roles.${role}`} defaults={role} />
</span>
</SelectItem>
);
})}
</SelectContent>
</Select>
);
};

View File

@@ -12,7 +12,7 @@ import {
import { If } from '@kit/ui/if';
import { Trans } from '@kit/ui/trans';
import { removeMemberFromAccountAction } from '../../actions/account-members-server-actions';
import { removeMemberFromAccountAction } from '../../server/actions/team-members-server-actions';
export const RemoveMemberDialog: React.FC<{
isOpen: boolean;
@@ -25,11 +25,11 @@ export const RemoveMemberDialog: React.FC<{
<DialogContent>
<DialogHeader>
<DialogTitle>
<Trans i18nKey="organization:removeMemberModalHeading" />
<Trans i18nKey="team:removeMemberModalHeading" />
</DialogTitle>
<DialogDescription>
Remove this member from the organization.
Remove this member from the team.
</DialogDescription>
</DialogHeader>

View File

@@ -0,0 +1,30 @@
import { cva } from 'class-variance-authority';
import { Database } from '@kit/supabase/database';
import { Badge } from '@kit/ui/badge';
import { Trans } from '@kit/ui/trans';
type Role = Database['public']['Enums']['account_role'];
const roleClassNameBuilder = cva('font-medium capitalize', {
variants: {
role: {
owner: 'bg-primary',
member: 'bg-blue-50 text-blue-500 dark:bg-blue-500/10',
},
},
});
export const RoleBadge: React.FC<{
role: Role;
}> = ({ role }) => {
const className = roleClassNameBuilder({ role });
return (
<Badge className={className}>
<span data-test={'member-role-badge'}>
<Trans i18nKey={`common.roles.${role}`} defaults={role} />
</span>
</Badge>
);
};

View File

@@ -27,8 +27,8 @@ import { If } from '@kit/ui/if';
import { Input } from '@kit/ui/input';
import { Trans } from '@kit/ui/trans';
import { transferOwnershipAction } from '../../actions/account-members-server-actions';
import { TransferOwnershipConfirmationSchema } from '../../schema/transfer-ownership-confirmation.schema';
import { transferOwnershipAction } from '../../server/actions/team-members-server-actions';
export const TransferOwnershipDialog: React.FC<{
isOpen: boolean;
@@ -42,11 +42,11 @@ export const TransferOwnershipDialog: React.FC<{
<DialogContent>
<DialogHeader>
<DialogTitle>
<Trans i18nKey="organization:transferOwnership" />
<Trans i18nKey="team:transferOwnership" />
</DialogTitle>
<DialogDescription>
Transfer ownership of the organization to another member.
Transfer ownership of the team to another member.
</DialogDescription>
</DialogHeader>

View File

@@ -25,9 +25,9 @@ import {
import { If } from '@kit/ui/if';
import { Trans } from '@kit/ui/trans';
import { updateMemberRoleAction } from '../../actions/account-members-server-actions';
import { UpdateRoleSchema } from '../../schema/update-role-schema';
import { MembershipRoleSelector } from '../membership-role-selector';
import { updateMemberRoleAction } from '../../server/actions/team-members-server-actions';
import { MembershipRoleSelector } from './membership-role-selector';
type Role = Database['public']['Enums']['account_role'];