Skip to content
Snippets Groups Projects
Commit ba81fd20 authored by Bruno Muniz's avatar Bruno Muniz :apple:
Browse files

improved destination code on launch

parent 16f11a72
No related branches found
No related tags found
1 merge request!85Fixes biometric authentication
......@@ -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
}
......
......@@ -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()
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment