bugfix: the flow for trial and accept invitation (org + staff)is now unified. all navigate to dshboard if succesfull.

This commit is contained in:
2026-08-19 00:39:31 +03:30
parent 6d90787c13
commit d6958b2e48
16 changed files with 138 additions and 43 deletions

View File

@@ -16,6 +16,8 @@ import { OrganizationDetailsFields } from '@/components/ui/auth/OrganizationDeta
import { RegistrationProgressSteps } from '@/components/ui/auth/RegistrationProgressSteps';
import { getUserFacingError } from '@/components/shared/formatApiError';
import { organizationApi } from '@/lib/api/organization';
import { useAuth } from '@/lib/hooks/useAuth';
import { navigateIntoAppIfOrgSelected } from '@/lib/auth/postAuthRedirect';
type AcceptOrganizationInviteForm = {
ownerName: string;
@@ -33,6 +35,7 @@ function AcceptOrganizationInviteContent() {
const tValidation = useTranslations('validation');
const params = useSearchParams();
const router = useRouter();
const { login } = useAuth();
const token = useMemo(() => params.get('token') || '', [params]);
const acceptOrganizationInviteSchema = useMemo(
@@ -137,6 +140,7 @@ function AcceptOrganizationInviteContent() {
setError('');
setSuccess('');
setSubmitting(true);
let accepted = false;
try {
await organizationApi.acceptInvite({
token,
@@ -146,10 +150,20 @@ function AcceptOrganizationInviteContent() {
organizationEmail: data.organizationEmail.trim(),
organizationType: data.organizationType,
});
setSuccess(t('organizationAcceptedRedirect'));
setTimeout(() => router.replace('/login'), 1000);
accepted = true;
const email = inviteInfo?.ownerEmail?.trim();
if (!email) {
throw new Error('missing-invite-email');
}
const { organizations } = await login(email, data.password);
navigateIntoAppIfOrgSelected((href) => router.replace(href), organizations.length);
} catch (e: unknown) {
setError(getUserFacingError(e, tErrors, t('errorAcceptInvitation')));
if (accepted) {
setSuccess(t('invitationAcceptedSignInFailed'));
setTimeout(() => router.replace('/login'), 1500);
} else {
setError(getUserFacingError(e, tErrors, t('errorAcceptInvitation')));
}
} finally {
setSubmitting(false);
}