diff --git a/mobile/lib/features/pairing/pairing_provider.dart b/mobile/lib/features/pairing/pairing_provider.dart index bb046d14d1..0da7b129a3 100644 --- a/mobile/lib/features/pairing/pairing_provider.dart +++ b/mobile/lib/features/pairing/pairing_provider.dart @@ -758,7 +758,13 @@ class PairingNotifier extends Notifier { ); await ref .read(authProvider.notifier) - .authenticateWithCommunity(community); + .authenticateWithCommunity( + community, + shouldContinue: () => + pairingGeneration == _pairingGeneration && + state.status == PairingStatus.storing && + !_sendIdentityToSource, + ); if (pairingGeneration != _pairingGeneration || state.status != PairingStatus.storing || _sendIdentityToSource) { @@ -869,7 +875,10 @@ class PairingNotifier extends Notifier { if (generation != _pairingGeneration) return; await ref .read(authProvider.notifier) - .authenticateWithCommunity(community); + .authenticateWithCommunity( + community, + shouldContinue: () => generation == _pairingGeneration, + ); if (generation != _pairingGeneration) return; state = PairingState( status: PairingStatus.success, diff --git a/mobile/test/features/pairing/pairing_provider_test.dart b/mobile/test/features/pairing/pairing_provider_test.dart index 726ad6791f..cd5d481196 100644 --- a/mobile/test/features/pairing/pairing_provider_test.dart +++ b/mobile/test/features/pairing/pairing_provider_test.dart @@ -669,6 +669,10 @@ void main() { await Future.delayed(Duration.zero); expect(container.read(pairingProvider).status, PairingStatus.idle); + expect( + container.read(authProvider).value!.status, + AuthStatus.unauthenticated, + ); expect(socket.isConnected, isFalse); }); @@ -1286,6 +1290,7 @@ class FakeAuthNotifier extends AsyncNotifier lastCommunity = community; entered?.complete(); await authentication?.future; + if (shouldContinue != null && !shouldContinue()) return; state = AsyncData( AuthState(status: AuthStatus.authenticated, community: community), );