"use client"; import Link from "next/link"; import { useRouter, useSearchParams } from "next/navigation"; import { Suspense, useState } from "react"; import { useTranslation } from "react-i18next"; import { AuthShell, FormAlert } from "@/components/auth/auth-ui"; import { Button } from "@/components/ui/button"; import { authClient } from "@/lib/auth-client"; function AcceptInviteInner() { const { t } = useTranslation(); const router = useRouter(); const params = useSearchParams(); const invitationId = params.get("id") ?? ""; const { data: session, isPending } = authClient.useSession(); const [error, setError] = useState(null); const [accepting, setAccepting] = useState(false); const accept = async () => { if (!invitationId || accepting) return; setAccepting(true); setError(null); const { data, error: err } = await authClient.organization.acceptInvitation({ invitationId, }); if (err || !data) { setError(err?.message ?? t("auth.acceptInvite.error")); setAccepting(false); return; } const orgId = data.invitation?.organizationId; if (orgId) { await authClient.organization.setActive({ organizationId: orgId }); } router.push("/"); }; if (!invitationId) { return ( {t("auth.acceptInvite.notFoundBody")} ); } // Must be signed in (with the invited email) to accept. if (!isPending && !session?.user) { const back = `/accept-invite?id=${encodeURIComponent(invitationId)}`; return (

{t("auth.acceptInvite.reopenPrefix")}{" "} {t("auth.acceptInvite.reopenLink")} .

); } return (
{error && {error}}
); } export default function AcceptInvitePage() { return ( ); }