From d5555a9b2397eefec661dc4b46a041fc9025aecd Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Mon, 20 Apr 2026 14:53:34 +0300 Subject: [PATCH] Fix session verification SAS flow not automatically starting With #5116 removing the `verificationRequestAccepted` view state and its `.startSasVerification` button action we now need another way of starting the SAS flows whenever the verification requests gets accepted. As such a state machine transition from `acceptingVerificationRequest` to `verificationRequestAccepted` will now automatically call `startSasVerification` on the SessionVerificationProxy. --- .../SessionVerificationScreenModels.swift | 1 - .../SessionVerificationScreenStateMachine.swift | 4 ---- .../SessionVerificationScreenViewModel.swift | 4 +--- UnitTests/Sources/SessionVerificationViewModelTests.swift | 4 ++-- 4 files changed, 3 insertions(+), 10 deletions(-) diff --git a/ElementX/Sources/Screens/Onboarding/SessionVerificationScreen/SessionVerificationScreenModels.swift b/ElementX/Sources/Screens/Onboarding/SessionVerificationScreen/SessionVerificationScreenModels.swift index 5a0e8738c..3d91783b5 100644 --- a/ElementX/Sources/Screens/Onboarding/SessionVerificationScreen/SessionVerificationScreenModels.swift +++ b/ElementX/Sources/Screens/Onboarding/SessionVerificationScreen/SessionVerificationScreenModels.swift @@ -17,7 +17,6 @@ enum SessionVerificationScreenViewAction { case acceptVerificationRequest case ignoreVerificationRequest case requestVerification - case startSasVerification case restart case accept case decline diff --git a/ElementX/Sources/Screens/Onboarding/SessionVerificationScreen/SessionVerificationScreenStateMachine.swift b/ElementX/Sources/Screens/Onboarding/SessionVerificationScreen/SessionVerificationScreenStateMachine.swift index 032ea65b8..b4d7ea55d 100644 --- a/ElementX/Sources/Screens/Onboarding/SessionVerificationScreen/SessionVerificationScreenStateMachine.swift +++ b/ElementX/Sources/Screens/Onboarding/SessionVerificationScreen/SessionVerificationScreenStateMachine.swift @@ -46,8 +46,6 @@ class SessionVerificationScreenStateMachine { case requestVerification /// The current verification request has been accepted case didAcceptVerificationRequest - /// Start a SaS verification flow - case startSasVerification /// Started a SaS verification flow case didStartSasVerification /// Has received emojis @@ -86,8 +84,6 @@ class SessionVerificationScreenStateMachine { stateMachine.addRoutes(event: .didAcceptVerificationRequest, transitions: [.acceptingVerificationRequest => .verificationRequestAccepted, .requestingVerification => .verificationRequestAccepted]) - stateMachine.addRoutes(event: .startSasVerification, transitions: [.verificationRequestAccepted => .startingSasVerification]) - stateMachine.addRoutes(event: .didFail, transitions: [.requestingVerification => .initial, .acceptingVerificationRequest => .initial]) diff --git a/ElementX/Sources/Screens/Onboarding/SessionVerificationScreen/SessionVerificationScreenViewModel.swift b/ElementX/Sources/Screens/Onboarding/SessionVerificationScreen/SessionVerificationScreenViewModel.swift index 114c33393..84896a447 100644 --- a/ElementX/Sources/Screens/Onboarding/SessionVerificationScreen/SessionVerificationScreenViewModel.swift +++ b/ElementX/Sources/Screens/Onboarding/SessionVerificationScreen/SessionVerificationScreenViewModel.swift @@ -87,8 +87,6 @@ class SessionVerificationScreenViewModel: SessionVerificationViewModelType, Sess actionsSubject.send(.finished) case .requestVerification: stateMachine.processEvent(.requestVerification) - case .startSasVerification: - stateMachine.processEvent(.startSasVerification) case .restart: stateMachine.processEvent(.restart) case .accept: @@ -133,7 +131,7 @@ class SessionVerificationScreenViewModel: SessionVerificationViewModelType, Sess self.stateMachine.processEvent(.didFail) } } - case (.verificationRequestAccepted, .startSasVerification, .startingSasVerification): + case (.acceptingVerificationRequest, .didAcceptVerificationRequest, .verificationRequestAccepted): startSasVerification() case (.showingChallenge, .acceptChallenge, .acceptingChallenge): acceptChallenge() diff --git a/UnitTests/Sources/SessionVerificationViewModelTests.swift b/UnitTests/Sources/SessionVerificationViewModelTests.swift index 2229e175d..c94ae5436 100644 --- a/UnitTests/Sources/SessionVerificationViewModelTests.swift +++ b/UnitTests/Sources/SessionVerificationViewModelTests.swift @@ -109,9 +109,9 @@ struct SessionVerificationViewModelTests { private mutating func setupChallengeReceived() async throws { let actionsPublisher = sessionVerificationController.actions.delay(for: .seconds(0.1), scheduler: DispatchQueue.main) let cancellable = actionsPublisher - .sink { [context] action in + .sink { [sessionVerificationController] action in if case .acceptedVerificationRequest = action { - context?.send(viewAction: .startSasVerification) + Task { await sessionVerificationController?.startSasVerification() } } }