import { redirect } from "next/navigation"; import { auth } from "@clerk/nextjs/server"; import { fetchInvitationByToken, processInvitationToken } from "@/lib/supabase/employees-actions"; import JoinAcceptForm from "./JoinAcceptForm"; export default async function JoinPage({ params, }: { params: Promise<{ token: string }>; }) { const { token } = await params; const { userId } = await auth(); const invitation = await fetchInvitationByToken(token); if (!invitation) { return (

Invalid or Expired Invitation

This invitation link is no longer valid. Please contact your organisation administrator for a new invitation.

); } // Already signed in — accept directly if (userId) { const result = await processInvitationToken(token); if (result.success && result.redirectUrl) { redirect(result.redirectUrl); } // If accept failed, show error return (

{result.error || "Could not accept invitation"}

Go to Dashboard
); } // Not signed in — show accept form return (
👋

You're invited!

{invitation.orgName} has invited{" "} {invitation.email} to join their team on Vela.

); }