Move session related responsibilities from ChatsFlowFlowCoordinator to UserSessionFlowCoordinator.

Specifically: onboarding, session verification and logout.
This commit is contained in:
Doug
2025-07-30 15:19:56 +01:00
committed by Doug
parent 1ca84c8c94
commit 6307534341
9 changed files with 342 additions and 217 deletions
@@ -16,12 +16,12 @@ enum SessionVerificationScreenCoordinatorAction {
enum SessionVerificationScreenFlow {
case deviceInitiator
case deviceResponder(requestDetails: SessionVerificationRequestDetails)
case userIntiator(userID: String)
case userInitiator(userID: String)
case userResponder(requestDetails: SessionVerificationRequestDetails)
var isResponder: Bool {
switch self {
case .deviceInitiator, .userIntiator:
case .deviceInitiator, .userInitiator:
false
case .deviceResponder, .userResponder:
true
@@ -36,7 +36,7 @@ struct SessionVerificationScreenViewState: BindableState {
switch flow {
case .deviceInitiator, .deviceResponder:
return (\.devices, .defaultSolid)
case .userIntiator, .userResponder:
case .userInitiator, .userResponder:
return (\.userProfileSolid, .defaultSolid)
}
case .acceptingVerificationRequest:
@@ -74,7 +74,7 @@ struct SessionVerificationScreenViewState: BindableState {
switch flow {
case .deviceInitiator:
return L10n.screenSessionVerificationUseAnotherDeviceTitle
case .userIntiator:
case .userInitiator:
return L10n.screenSessionVerificationUserInitiatorTitle
case .deviceResponder, .userResponder:
return L10n.screenSessionVerificationRequestTitle
@@ -108,7 +108,7 @@ struct SessionVerificationScreenViewState: BindableState {
switch flow {
case .deviceInitiator, .deviceResponder:
return L10n.screenSessionVerificationWaitingOtherDeviceTitle
case .userIntiator, .userResponder:
case .userInitiator, .userResponder:
return L10n.screenSessionVerificationWaitingOtherUserTitle
}
}
@@ -119,7 +119,7 @@ struct SessionVerificationScreenViewState: BindableState {
switch flow {
case .deviceInitiator:
return L10n.screenSessionVerificationUseAnotherDeviceSubtitle
case .userIntiator:
case .userInitiator:
return L10n.screenSessionVerificationUserInitiatorSubtitle
case .deviceResponder:
return L10n.screenSessionVerificationRequestSubtitle
@@ -146,14 +146,14 @@ struct SessionVerificationScreenViewState: BindableState {
switch flow {
case .deviceInitiator, .deviceResponder:
return L10n.screenSessionVerificationCompareEmojisSubtitle
case .userIntiator, .userResponder:
case .userInitiator, .userResponder:
return L10n.screenSessionVerificationCompareEmojisUserSubtitle
}
case .verified:
switch flow {
case .deviceInitiator, .deviceResponder:
return L10n.screenSessionVerificationCompleteSubtitle
case .userIntiator, .userResponder:
case .userInitiator, .userResponder:
return L10n.screenSessionVerificationCompleteUserSubtitle
}
@@ -178,7 +178,7 @@ class SessionVerificationScreenViewModel: SessionVerificationViewModelType, Sess
switch flow {
case .deviceInitiator:
return await sessionVerificationControllerProxy.requestDeviceVerification()
case .userIntiator(let userID):
case .userInitiator(let userID):
return await sessionVerificationControllerProxy.requestUserVerification(userID)
default:
fatalError("Incorrect API usage.")
@@ -43,7 +43,7 @@ struct SessionVerificationScreen: View {
private var toolbar: some ToolbarContent {
ToolbarItem(placement: .cancellationAction) {
switch context.viewState.flow {
case .userIntiator, .userResponder:
case .userInitiator, .userResponder:
Button(L10n.actionCancel) {
context.send(viewAction: .cancel)
}
@@ -91,7 +91,7 @@ struct SessionVerificationScreen: View {
SessionVerificationRequestDetailsView(details: details,
isUserVerification: true,
mediaProvider: context.mediaProvider)
case .userIntiator:
case .userInitiator:
Button(L10n.actionLearnMore) {
UIApplication.shared.open(context.viewState.learnMoreURL)
}
@@ -129,7 +129,7 @@ struct SessionVerificationScreen: View {
switch context.viewState.verificationState {
case .initial:
switch context.viewState.flow {
case .deviceInitiator, .userIntiator:
case .deviceInitiator, .userInitiator:
Button(L10n.actionStartVerification) {
context.send(viewAction: .requestVerification)
}
@@ -152,7 +152,7 @@ struct SessionVerificationScreen: View {
}
case .cancelled:
switch context.viewState.flow {
case .deviceInitiator, .userIntiator:
case .deviceInitiator, .userInitiator:
Button(L10n.actionRetry) {
context.send(viewAction: .restart)
}
@@ -214,7 +214,7 @@ struct SessionVerification_Previews: PreviewProvider, TestablePreview {
sessionVerificationScreen(state: .initial, flow: .deviceInitiator)
.previewDisplayName("Initial - Device Initiator")
sessionVerificationScreen(state: .initial, flow: .userIntiator(userID: "@bob:matrix.org"))
sessionVerificationScreen(state: .initial, flow: .userInitiator(userID: "@bob:matrix.org"))
.previewDisplayName("Initial - User Initiator")
let details = SessionVerificationRequestDetails(senderProfile: UserProfileProxy(userID: "@bob:matrix.org",