sunatest / frontend /src /lib /actions /invitations.ts
llama1's picture
Upload 781 files
5da4770 verified
'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}`);
}