Update theme toggle functionality and UI components

Implemented a new ModeToggle feature for theme switching in personal account dropdown. The changes also made adjustments to several UI components, such as transforming Dialog to AlertDialog in transfer-ownership-dialog, and introducing invitation-submit-button in team-accounts. Some minor amendments include text changes and styling modifications.
This commit is contained in:
giancarlo
2024-03-28 20:29:54 +08:00
parent caca7c12f6
commit f6d1b500da
30 changed files with 1318 additions and 810 deletions

View File

@@ -1,14 +1,17 @@
'use server';
import { revalidatePath } from 'next/cache';
import { redirect } from 'next/navigation';
import { SupabaseClient } from '@supabase/supabase-js';
import { z } from 'zod';
import { Database } from '@kit/supabase/database';
import { requireAuth } from '@kit/supabase/require-auth';
import { getSupabaseServerActionClient } from '@kit/supabase/server-actions-client';
import { AcceptInvitationSchema } from '../../schema/accept-invitation.schema';
import { DeleteInvitationSchema } from '../../schema/delete-invitation.schema';
import { InviteMembersSchema } from '../../schema/invite-members.schema';
import { UpdateInvitationSchema } from '../../schema/update-invitation-schema';
@@ -80,10 +83,32 @@ export async function updateInvitationAction(
return { success: true };
}
async function assertSession(client: SupabaseClient<Database>) {
const { data, error } = await client.auth.getUser();
export async function acceptInvitationAction(data: FormData) {
const client = getSupabaseServerActionClient();
if (error ?? !data.user) {
const { inviteToken, nextPath } = AcceptInvitationSchema.parse(
Object.fromEntries(data),
);
const { user } = await assertSession(client);
const service = new AccountInvitationsService(client);
await service.acceptInvitationToTeam({
adminClient: getSupabaseServerActionClient({ admin: true }),
inviteToken,
userId: user.id,
});
return redirect(nextPath);
}
async function assertSession(client: SupabaseClient<Database>) {
const { error, data } = await requireAuth(client);
if (error) {
throw new Error(`Authentication required`);
}
return data;
}