From 5b315bfe556c8326064e0d0328772abcbfb0836a Mon Sep 17 00:00:00 2001 From: Louis CAD Date: Tue, 4 Aug 2026 16:31:03 +0200 Subject: [PATCH] feat: Allow retrying seamless login after app restart --- .../internal/AuthenticatorFacadeImpl.kt | 27 +++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/AuthenticatorCore/src/commonMain/kotlin/internal/AuthenticatorFacadeImpl.kt b/AuthenticatorCore/src/commonMain/kotlin/internal/AuthenticatorFacadeImpl.kt index d6ceb48..a157fa3 100644 --- a/AuthenticatorCore/src/commonMain/kotlin/internal/AuthenticatorFacadeImpl.kt +++ b/AuthenticatorCore/src/commonMain/kotlin/internal/AuthenticatorFacadeImpl.kt @@ -253,16 +253,10 @@ internal class AuthenticatorFacadeImpl( } } - private suspend fun shouldTryImmediateLogin(): Boolean = raceOf( - { - proceedMigration.join() - true - }, - { - atLeastOneConnectedAccount.first { it } - false - }, - ) || proceedMigration.isCompleted // In case it finished after a connected account was added. + private suspend fun waitForMigrationStartSignal(): Unit = raceOf( + { proceedMigration.join() }, + { atLeastOneConnectedAccount.first { it } }, + ) private suspend fun FlowCollector.registrationAttempts(notRegisteredAccount: AccountEntity) { val passKeyAlreadyRegistered = when (val accountStatus = notRegisteredAccount.status) { @@ -321,13 +315,12 @@ internal class AuthenticatorFacadeImpl( require(accountToMigrate.status == Status.ToBeMigrated) emit(Account.Status.NotConnected.AttemptingToConnect.ToBeMigrated) - if (shouldTryImmediateLogin()) { - blockLogger.withLog("migrationAttempts.tryCrossAppLogin") { - tryCrossAppLogin(accountToMigrate) { return } - } - blockLogger.withLog("migrationAttempts.tryToMigrateViaOngoingLogin") { - tryToMigrateViaOngoingLogin(accountToMigrate) { return } - } + waitForMigrationStartSignal() + blockLogger.withLog("migrationAttempts.tryCrossAppLogin") { + tryCrossAppLogin(accountToMigrate) { return } + } + blockLogger.withLog("migrationAttempts.tryToMigrateViaOngoingLogin") { + tryToMigrateViaOngoingLogin(accountToMigrate) { return } } blockLogger.withLog("migrationAttempts.tryMigratingWithReLogin") { tryMigratingWithReLogin(accountToMigrate)