@@ -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