| 'use server'; | |
| import { revalidatePath } from 'next/cache'; | |
| import { createClient } from '../supabase/server'; | |
| import { redirect } from 'next/navigation'; | |
| export async function createInvitation( | |
| prevState: any, | |
| formData: FormData, | |
| ): Promise<{ token?: string; message?: string }> { | |
| const invitationType = formData.get('invitationType') as string; | |
| const accountId = formData.get('accountId') as string; | |
| const accountRole = formData.get('accountRole') as string; | |
| const supabase = await createClient(); | |
| const { data, error } = await supabase.rpc('create_invitation', { | |
| account_id: accountId, | |
| invitation_type: invitationType, | |
| account_role: accountRole, | |
| }); | |
| if (error) { | |
| return { | |
| message: error.message, | |
| }; | |
| } | |
| revalidatePath(`/[accountSlug]/settings/members/page`); | |
| return { | |
| token: data.token as string, | |
| }; | |
| } | |
| export async function deleteInvitation(prevState: any, formData: FormData) { | |
| const invitationId = formData.get('invitationId') as string; | |
| const returnPath = formData.get('returnPath') as string; | |
| const supabase = await createClient(); | |
| const { error } = await supabase.rpc('delete_invitation', { | |
| invitation_id: invitationId, | |
| }); | |
| if (error) { | |
| return { | |
| message: error.message, | |
| }; | |
| } | |
| redirect(returnPath); | |
| } | |
| export async function acceptInvitation(prevState: any, formData: FormData) { | |
| const token = formData.get('token') as string; | |
| const supabase = await createClient(); | |
| const { error, data } = await supabase.rpc('accept_invitation', { | |
| lookup_invitation_token: token, | |
| }); | |
| if (error) { | |
| return { | |
| message: error.message, | |
| }; | |
| } | |
| redirect(`/${data.slug}`); | |
| } | |