From ba81fd2067d1c6a948825be8662a0d3caabb90a0 Mon Sep 17 00:00:00 2001 From: Bruno Muniz Azevedo Filho <bruno@elixxir.io> Date: Thu, 1 Dec 2022 15:46:29 -0300 Subject: [PATCH] improved destination code on launch --- Sources/LaunchFeature/LaunchController.swift | 4 +- Sources/LaunchFeature/LaunchViewModel.swift | 45 +++++++++++--------- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/Sources/LaunchFeature/LaunchController.swift b/Sources/LaunchFeature/LaunchController.swift index 2684c669..8a9b1071 100644 --- a/Sources/LaunchFeature/LaunchController.swift +++ b/Sources/LaunchFeature/LaunchController.swift @@ -27,7 +27,7 @@ public final class LaunchController: UIViewController { .statePublisher .receive(on: DispatchQueue.main) .sink { [unowned self] in - guard $0.shouldPushChats == false else { + guard $0.shouldPushEndDestination != .some(.chats) else { guard $0.shouldShowTerms == false else { navigator.perform(PresentTermsAndConditions(replacing: true, on: navigationController!)) return @@ -39,7 +39,7 @@ public final class LaunchController: UIViewController { navigator.perform(PresentChatList(on: navigationController!)) return } - guard $0.shouldPushOnboarding == false else { + guard $0.shouldPushEndDestination != .some(.onboarding) else { navigator.perform(PresentOnboardingStart(on: navigationController!)) return } diff --git a/Sources/LaunchFeature/LaunchViewModel.swift b/Sources/LaunchFeature/LaunchViewModel.swift index 30ac8e24..732d2e2d 100644 --- a/Sources/LaunchFeature/LaunchViewModel.swift +++ b/Sources/LaunchFeature/LaunchViewModel.swift @@ -29,6 +29,10 @@ import class XXClient.Cancellable import PulseLogHandler final class LaunchViewModel { + enum Destination { + case chats, onboarding + } + struct UpdateModel { let content: String let urlString: String @@ -39,9 +43,8 @@ final class LaunchViewModel { struct ViewState { var shouldShowTerms = false - var shouldPushChats = false var shouldOfferUpdate: UpdateModel? - var shouldPushOnboarding = false + var shouldPushEndDestination: Destination? } @Dependency(\.app.log) var log @@ -202,41 +205,41 @@ extension LaunchViewModel { try dummyTrafficManager.setStatus(dummyTrafficOn) - var shouldPushChats = false - var shouldPushOnboarding = false + let endDestination: Destination + + if messenger.isLoggedIn() == false { + if try messenger.isRegistered() { + try messenger.logIn() + endDestination = .chats + } else { + try? sftpManager.unlink() + try? dropboxManager.unlink() + endDestination = .onboarding + } + } else { + endDestination = .chats + } defer { hudManager.hide() - if shouldPushChats { + if endDestination == .chats { if isBiometricsOn, permissions.biometrics.status() { permissions.biometrics.request { [weak self] granted in guard let self else { return } if granted { - self.stateSubject.value.shouldPushChats = true + self.stateSubject.value.shouldPushEndDestination = .chats } else { - // DO WHAT? + // TODO: A fallback state for failing biometrics } } } else { - stateSubject.value.shouldPushChats = true + stateSubject.value.shouldPushEndDestination = .chats } } else { - stateSubject.value.shouldPushOnboarding = shouldPushOnboarding + stateSubject.value.shouldPushEndDestination = .onboarding } } - if messenger.isLoggedIn() == false { - if try messenger.isRegistered() { - try messenger.logIn() - shouldPushChats = true - } else { - try? sftpManager.unlink() - try? dropboxManager.unlink() - shouldPushOnboarding = true - } - } else { - shouldPushChats = true - } if !messenger.isBackupRunning() { try? messenger.resumeBackup() } -- GitLab