mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
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.
This commit is contained in:
-1
@@ -17,7 +17,6 @@ enum SessionVerificationScreenViewAction {
|
|||||||
case acceptVerificationRequest
|
case acceptVerificationRequest
|
||||||
case ignoreVerificationRequest
|
case ignoreVerificationRequest
|
||||||
case requestVerification
|
case requestVerification
|
||||||
case startSasVerification
|
|
||||||
case restart
|
case restart
|
||||||
case accept
|
case accept
|
||||||
case decline
|
case decline
|
||||||
|
|||||||
-4
@@ -46,8 +46,6 @@ class SessionVerificationScreenStateMachine {
|
|||||||
case requestVerification
|
case requestVerification
|
||||||
/// The current verification request has been accepted
|
/// The current verification request has been accepted
|
||||||
case didAcceptVerificationRequest
|
case didAcceptVerificationRequest
|
||||||
/// Start a SaS verification flow
|
|
||||||
case startSasVerification
|
|
||||||
/// Started a SaS verification flow
|
/// Started a SaS verification flow
|
||||||
case didStartSasVerification
|
case didStartSasVerification
|
||||||
/// Has received emojis
|
/// Has received emojis
|
||||||
@@ -86,8 +84,6 @@ class SessionVerificationScreenStateMachine {
|
|||||||
stateMachine.addRoutes(event: .didAcceptVerificationRequest, transitions: [.acceptingVerificationRequest => .verificationRequestAccepted,
|
stateMachine.addRoutes(event: .didAcceptVerificationRequest, transitions: [.acceptingVerificationRequest => .verificationRequestAccepted,
|
||||||
.requestingVerification => .verificationRequestAccepted])
|
.requestingVerification => .verificationRequestAccepted])
|
||||||
|
|
||||||
stateMachine.addRoutes(event: .startSasVerification, transitions: [.verificationRequestAccepted => .startingSasVerification])
|
|
||||||
|
|
||||||
stateMachine.addRoutes(event: .didFail, transitions: [.requestingVerification => .initial,
|
stateMachine.addRoutes(event: .didFail, transitions: [.requestingVerification => .initial,
|
||||||
.acceptingVerificationRequest => .initial])
|
.acceptingVerificationRequest => .initial])
|
||||||
|
|
||||||
|
|||||||
+1
-3
@@ -87,8 +87,6 @@ class SessionVerificationScreenViewModel: SessionVerificationViewModelType, Sess
|
|||||||
actionsSubject.send(.finished)
|
actionsSubject.send(.finished)
|
||||||
case .requestVerification:
|
case .requestVerification:
|
||||||
stateMachine.processEvent(.requestVerification)
|
stateMachine.processEvent(.requestVerification)
|
||||||
case .startSasVerification:
|
|
||||||
stateMachine.processEvent(.startSasVerification)
|
|
||||||
case .restart:
|
case .restart:
|
||||||
stateMachine.processEvent(.restart)
|
stateMachine.processEvent(.restart)
|
||||||
case .accept:
|
case .accept:
|
||||||
@@ -133,7 +131,7 @@ class SessionVerificationScreenViewModel: SessionVerificationViewModelType, Sess
|
|||||||
self.stateMachine.processEvent(.didFail)
|
self.stateMachine.processEvent(.didFail)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case (.verificationRequestAccepted, .startSasVerification, .startingSasVerification):
|
case (.acceptingVerificationRequest, .didAcceptVerificationRequest, .verificationRequestAccepted):
|
||||||
startSasVerification()
|
startSasVerification()
|
||||||
case (.showingChallenge, .acceptChallenge, .acceptingChallenge):
|
case (.showingChallenge, .acceptChallenge, .acceptingChallenge):
|
||||||
acceptChallenge()
|
acceptChallenge()
|
||||||
|
|||||||
@@ -109,9 +109,9 @@ struct SessionVerificationViewModelTests {
|
|||||||
private mutating func setupChallengeReceived() async throws {
|
private mutating func setupChallengeReceived() async throws {
|
||||||
let actionsPublisher = sessionVerificationController.actions.delay(for: .seconds(0.1), scheduler: DispatchQueue.main)
|
let actionsPublisher = sessionVerificationController.actions.delay(for: .seconds(0.1), scheduler: DispatchQueue.main)
|
||||||
let cancellable = actionsPublisher
|
let cancellable = actionsPublisher
|
||||||
.sink { [context] action in
|
.sink { [sessionVerificationController] action in
|
||||||
if case .acceptedVerificationRequest = action {
|
if case .acceptedVerificationRequest = action {
|
||||||
context?.send(viewAction: .startSasVerification)
|
Task { await sessionVerificationController?.startSasVerification() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user