@@ -30,6 +30,7 @@ import { getLocalizedEmailValidationErrorMessage } from './errorMessageMapper';
3030import { IndexContainerProps , LocationState } from './interfaces' ;
3131import { useNavigateWithQuery } from '../../lib/hooks/useNavigateWithQuery' ;
3232import { hardNavigate } from 'fxa-react/lib/utils' ;
33+ import LoadingSpinner from 'fxa-react/components/LoadingSpinner' ;
3334
3435export const IndexContainer = ( {
3536 integration,
@@ -45,7 +46,8 @@ export const IndexContainer = ({
4546 const [ errorBannerMessage , setErrorBannerMessage ] = useState ( '' ) ;
4647 const [ successBannerMessage , setSuccessBannerMessage ] = useState ( '' ) ;
4748 const [ tooltipErrorMessage , setTooltipErrorMessage ] = useState ( '' ) ;
48- const [ hasTriedAutoProcess , setHasTriedAutoProcess ] = useState ( false ) ;
49+ const [ hasFailedAutoEmailProcessing , setHasFailedAutoEmailProcessing ] = useState ( false ) ;
50+ const [ isLoading , setIsLoading ] = useState ( true ) ;
4951
5052 const { queryParamModel, validationError } = useValidatedQueryParams (
5153 IndexQueryParams ,
@@ -187,6 +189,7 @@ export const IndexContainer = ({
187189 // if email verification fails, clear from params to avoid re-use
188190 if ( ! isManualSubmission ) {
189191 clearEmailParams ( ) ;
192+ setHasFailedAutoEmailProcessing ( true ) ;
190193 }
191194 handleEmailSubmissionError ( email , error ) ;
192195 }
@@ -210,16 +213,20 @@ export const IndexContainer = ({
210213 const shouldTrySuggestedEmail = suggestedEmail && ! prefillEmail ;
211214
212215 useEffect ( ( ) => {
213- if ( shouldTrySuggestedEmail && ! hasTriedAutoProcess ) {
214- setHasTriedAutoProcess ( true ) ;
216+ if ( isUnsupportedContext ( integration . data . context ) ) {
217+ hardNavigate ( '/update_firefox' , { } , true ) ;
218+ } else if ( shouldTrySuggestedEmail && ! hasFailedAutoEmailProcessing ) {
215219 processEmailSubmission ( suggestedEmail , false ) ;
220+ } else {
221+ setIsLoading ( false ) ;
216222 }
217223 } , [
218224 ftlMsgResolver ,
219- hasTriedAutoProcess ,
225+ hasFailedAutoEmailProcessing ,
220226 processEmailSubmission ,
221227 suggestedEmail ,
222228 shouldTrySuggestedEmail ,
229+ integration . data . context ,
223230 ] ) ;
224231
225232 useEffect ( ( ) => {
@@ -244,13 +251,11 @@ export const IndexContainer = ({
244251 }
245252 } , [ ftlMsgResolver , deleteAccountSuccess ] ) ;
246253
247- if ( isUnsupportedContext ( integration . data . context ) ) {
248- hardNavigate ( '/update_firefox' , { } , true ) ;
249- }
250-
251254 const initialPrefill = prefillEmail || suggestedEmail ;
252255
253- return (
256+ return isLoading ? (
257+ < LoadingSpinner fullScreen />
258+ ) : (
254259 < Index
255260 { ...{
256261 integration,
0 commit comments