bugfix: the flow for trial and accept invitation (org + staff)is now unified. all navigate to dshboard if succesfull.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user