Wait for session sync complete

This commit is contained in:
ismailgulek
2020-08-21 14:07:43 +03:00
parent 0503df9a40
commit a239176069

View File

@@ -28,7 +28,7 @@ final class KeyVerificationSelfVerifyWaitViewModel: KeyVerificationSelfVerifyWai
private let keyVerificationService: KeyVerificationService
private let verificationManager: MXKeyVerificationManager
private let isNewSignIn: Bool
private let secretsRecoveryAvailability: SecretsRecoveryAvailability
private var secretsRecoveryAvailability: SecretsRecoveryAvailability
private var keyVerificationRequest: MXKeyVerificationRequest?
// MARK: Public
@@ -62,7 +62,8 @@ final class KeyVerificationSelfVerifyWaitViewModel: KeyVerificationSelfVerifyWai
switch self.secretsRecoveryAvailability {
case .notAvailable:
fatalError("Should not happen: When recovery is not available button is hidden")
case .available(let secretsRecoveryMode): self.coordinatorDelegate?.keyVerificationSelfVerifyWaitViewModel(self, wantsToRecoverSecretsWith: secretsRecoveryMode)
case .available(let secretsRecoveryMode):
self.coordinatorDelegate?.keyVerificationSelfVerifyWaitViewModel(self, wantsToRecoverSecretsWith: secretsRecoveryMode)
}
}
}
@@ -85,7 +86,31 @@ final class KeyVerificationSelfVerifyWaitViewModel: KeyVerificationSelfVerifyWai
}, failure: { [weak self] error in
self?.update(viewState: .error(error))
})
continueLoadData()
} else {
// be sure that session has completed its first sync
if session.state >= MXSessionStateRunning {
continueLoadData()
} else {
// show loader
self.update(viewState: .loading)
NotificationCenter.default.addObserver(self, selector: #selector(sessionStateChanged), name: .mxSessionStateDidChange, object: session)
}
}
}
@objc
private func sessionStateChanged() {
if session.state >= MXSessionStateRunning {
NotificationCenter.default.removeObserver(self, name: .mxSessionStateDidChange, object: session)
continueLoadData()
}
}
private func continueLoadData() {
// update availability again
self.secretsRecoveryAvailability = session.crypto.recoveryService.vc_availability
let viewData = KeyVerificationSelfVerifyWaitViewData(isNewSignIn: self.isNewSignIn, secretsRecoveryAvailability: self.secretsRecoveryAvailability)