@@ -128,7 +128,7 @@ const LoginInitScreen: FC<Props> = ({ showFallback = false }) => {
128128 return navigateToScreen ( LoginScreenType . PasskeyReLogin ) ;
129129 } else if ( flags . hasSupportForConditionalUI ( ) ) {
130130 log . debug ( 'starting conditional UI' ) ;
131- void startConditionalUI ( res . val . conditionalUIChallenge ) ;
131+ void startConditionalUI ( res . val . conditionalUIChallenge , flags ) ;
132132 }
133133
134134 statefulLoader . current . finish ( ) ;
@@ -143,11 +143,15 @@ const LoginInitScreen: FC<Props> = ({ showFallback = false }) => {
143143 } ;
144144 } , [ getConnectService ] ) ;
145145
146- const startConditionalUI = async ( challenge : string | null ) => {
146+ const startConditionalUI = async ( challenge : string | null , resolvedFlags : Flags ) => {
147147 if ( ! challenge ) {
148148 return ;
149149 }
150150
151+ if ( resolvedFlags . hasSupportForEventLow ( ) ) {
152+ getConnectService ( ) . enqueueLowEvent ( { eventType : 'cui-ready' , timestamp : Date . now ( ) } ) ;
153+ }
154+
151155 let cuiStarted = false ;
152156 const res = await getConnectService ( ) . conditionalUILogin (
153157 ac => config . onConditionalLoginStart ?.( ac ) ,
@@ -187,6 +191,7 @@ const LoginInitScreen: FC<Props> = ({ showFallback = false }) => {
187191 }
188192
189193 try {
194+ await getConnectService ( ) . flushLowEvents ( ) ;
190195 await config . onComplete (
191196 connectLoginFinishToComplete ( res . val ) ,
192197 getConnectService ( ) . encodeClientState ( ) ,
@@ -204,6 +209,7 @@ const LoginInitScreen: FC<Props> = ({ showFallback = false }) => {
204209
205210 setIdentifierBasedLoading ( true ) ;
206211 setCurrentIdentifier ( identifier ) ;
212+ await getConnectService ( ) . flushLowEvents ( ) ;
207213 config . onLoginStart ?.( ) ;
208214
209215 const resStart = await getConnectService ( ) . loginStart ( identifier , PasskeyLoginSource . TextField , loadedMs ) ;
@@ -242,6 +248,7 @@ const LoginInitScreen: FC<Props> = ({ showFallback = false }) => {
242248 }
243249
244250 try {
251+ await getConnectService ( ) . flushLowEvents ( ) ;
245252 await config . onComplete (
246253 connectLoginFinishToComplete ( res . val ) ,
247254 getConnectService ( ) . encodeClientState ( ) ,
@@ -328,6 +335,7 @@ const LoginInitScreen: FC<Props> = ({ showFallback = false }) => {
328335 // This is needed to enable multiple login instances on the same page however only one should have the autocomplete
329336 // Else the conditionalUI won't work
330337 const autoComplete = useMemo ( ( ) => ( flags ?. hasSupportForConditionalUI ( ) ? 'username webauthn' : '' ) , [ flags ] ) ;
338+ const enableEventLow = useMemo ( ( ) => flags ?. hasSupportForEventLow ( ) ?? false , [ flags ] ) ;
331339
332340 switch ( loginInitState ) {
333341 case LoginInitState . SilentLoading :
@@ -340,6 +348,7 @@ const LoginInitScreen: FC<Props> = ({ showFallback = false }) => {
340348 isLoading = { cuiBasedLoading || identifierBasedLoading }
341349 error = { error }
342350 autoComplete = { autoComplete }
351+ enableEventLow = { enableEventLow }
343352 handleSubmit = { ( ) => void handleSubmit ( ) }
344353 handleIdentifierUpdate = { ( v : string ) => setIdentifier ( v ) }
345354 />
0 commit comments