Skip to content

Commit ca51be4

Browse files
committed
Fix email verified state
1 parent 1fed0b9 commit ca51be4

1 file changed

Lines changed: 58 additions & 32 deletions

File tree

packages/ui/src/components/ConfigureSSO/steps/VerifyDomainStep.tsx

Lines changed: 58 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export const VerifyDomainStep = (): JSX.Element => {
2828
const { session } = useSession();
2929
const { enterpriseConnection } = useConfigureSSO();
3030
const { t } = useLocalizations();
31+
const { goNext: outerGoNext } = useWizard();
3132

3233
const emailToVerify =
3334
user?.primaryEmailAddress ?? user?.emailAddresses?.find(e => e.verification.status !== 'verified');
@@ -40,6 +41,8 @@ export const VerifyDomainStep = (): JSX.Element => {
4041
isVerified && enterpriseConnection && enterpriseConnection.organizationId !== activeOrganizationId,
4142
);
4243

44+
const wasVerifiedOnMountRef = useRef(isVerified);
45+
4346
if (isDomainTakenByOtherOrg) {
4447
const conflictingDomain = enterpriseConnection?.domains[0] as string;
4548

@@ -83,6 +86,36 @@ export const VerifyDomainStep = (): JSX.Element => {
8386
);
8487
}
8588

89+
if (wasVerifiedOnMountRef.current && emailToVerify?.emailAddress) {
90+
return (
91+
<Flow.Part part='verifyDomain'>
92+
<Step
93+
elementDescriptor={descriptors.configureSSOStep}
94+
elementId={descriptors.configureSSOStep.setId('verify-domain')}
95+
>
96+
<Step.Header
97+
title={t(localizationKeys('configureSSO.verifyEmailDomainStep.title'))}
98+
description={t(localizationKeys('configureSSO.verifyEmailDomainStep.subtitle'))}
99+
/>
100+
101+
<Step.Body>
102+
<Step.Section
103+
sx={{ flex: 1 }}
104+
align='center'
105+
justify='center'
106+
>
107+
<EmailAlreadyVerified emailAddress={emailToVerify.emailAddress} />
108+
</Step.Section>
109+
</Step.Body>
110+
111+
<Step.Footer>
112+
<Step.Footer.Continue onClick={() => outerGoNext()} />
113+
</Step.Footer>
114+
</Step>
115+
</Flow.Part>
116+
);
117+
}
118+
86119
return (
87120
<Flow.Part part='verifyDomain'>
88121
<Step
@@ -242,12 +275,10 @@ export const EnterVerificationCodeStep = ({
242275
const { user } = useUser();
243276
const { provider, createEnterpriseConnection } = useConfigureSSO();
244277
const card = useCardState();
245-
const codeSubmittedRef = useRef(false);
246278
const { goNext, goPrev, isFirstStep } = useWizard();
247279

248280
const isVerified = emailToVerify?.verification.status === 'verified';
249281
const isPrimary = emailToVerify?.id === user?.primaryEmailAddressId;
250-
const hasVerifiedEmail = emailToVerify?.emailAddress && isVerified && !codeSubmittedRef.current;
251282

252283
const prepareEmailVerification = useReverification(() =>
253284
emailToVerify?.prepareVerification({ strategy: 'email_code' }),
@@ -264,7 +295,6 @@ export const EnterVerificationCodeStep = ({
264295

265296
const otp = useFieldOTP({
266297
onCodeEntryFinished: (code, resolve, reject) => {
267-
codeSubmittedRef.current = true;
268298
attemptEmailVerification(code)
269299
.then(() => resolve())
270300
.catch(reject);
@@ -315,34 +345,30 @@ export const EnterVerificationCodeStep = ({
315345
align='center'
316346
justify='center'
317347
>
318-
{hasVerifiedEmail ? (
319-
<EmailAlreadyVerified emailAddress={emailToVerify.emailAddress} />
320-
) : (
321-
<Col
322-
gap={4}
323-
sx={{ textAlign: 'center' }}
324-
>
325-
<Col gap={1}>
326-
<Heading
327-
textVariant='h1'
328-
sx={t => ({ fontSize: t.fontSizes.$sm })}
329-
localizationKey={localizationKeys('configureSSO.verifyEmailDomainStep.emailCode.formTitle')}
330-
/>
331-
<Text
332-
as='p'
333-
variant='body'
334-
colorScheme='secondary'
335-
localizationKey={localizationKeys('configureSSO.verifyEmailDomainStep.emailCode.formSubtitle', {
336-
identifier: emailToVerify.emailAddress,
337-
})}
338-
/>
339-
</Col>
340-
<Form.OTPInput
341-
{...otp}
342-
resendButton={localizationKeys('configureSSO.verifyEmailDomainStep.emailCode.resendButton')}
348+
<Col
349+
gap={4}
350+
sx={{ textAlign: 'center' }}
351+
>
352+
<Col gap={1}>
353+
<Heading
354+
textVariant='h1'
355+
sx={t => ({ fontSize: t.fontSizes.$sm })}
356+
localizationKey={localizationKeys('configureSSO.verifyEmailDomainStep.emailCode.formTitle')}
357+
/>
358+
<Text
359+
as='p'
360+
variant='body'
361+
colorScheme='secondary'
362+
localizationKey={localizationKeys('configureSSO.verifyEmailDomainStep.emailCode.formSubtitle', {
363+
identifier: emailToVerify.emailAddress,
364+
})}
343365
/>
344366
</Col>
345-
)}
367+
<Form.OTPInput
368+
{...otp}
369+
resendButton={localizationKeys('configureSSO.verifyEmailDomainStep.emailCode.resendButton')}
370+
/>
371+
</Col>
346372
</Step.Section>
347373

348374
<Step.Footer>
@@ -377,16 +403,16 @@ const EmailAlreadyVerified = ({ emailAddress }: { emailAddress: string }): JSX.E
377403
})}
378404
/>
379405
<Col
380-
gap={1}
381-
sx={t => ({ textAlign: 'center', maxWidth: t.sizes.$94 })}
406+
gap={2}
407+
sx={t => ({ textAlign: 'center', maxWidth: t.sizes.$66 })}
382408
>
383409
<Heading
384410
textVariant='h1'
385411
sx={t => ({ fontSize: t.fontSizes.$lg, fontWeight: t.fontWeights.$bold })}
386412
localizationKey={localizationKeys('configureSSO.verifyEmailDomainStep.emailCode.verified.title')}
387413
/>
388414
<Col
389-
gap={1}
415+
gap={3}
390416
sx={{ flex: 1 }}
391417
>
392418
<Text

0 commit comments

Comments
 (0)