Listen for request changes and show QR reader on key verification

This commit is contained in:
ismailgulek
2021-06-14 17:00:50 +03:00
parent 3e079ec71f
commit 3cd0472bd2

View File

@@ -132,9 +132,11 @@ final class KeyVerificationSelfVerifyWaitViewModel: KeyVerificationSelfVerifyWai
self.registerKeyVerificationManagerNewRequestNotification(for: self.verificationManager)
self.update(viewState: .loaded(viewData))
self.registerTransactionDidStateChangeNotification()
self.registerKeyVerificationRequestChangeNotification()
}
private func cancel() {
self.unregisterKeyVerificationRequestChangeNotification()
self.unregisterKeyVerificationManagerNewRequestNotification()
self.cancelKeyVerificationRequest()
self.coordinatorDelegate?.keyVerificationSelfVerifyWaitViewModelDidCancel(self)
@@ -193,6 +195,37 @@ final class KeyVerificationSelfVerifyWaitViewModel: KeyVerificationSelfVerifyWai
self.acceptKeyVerificationRequest(keyVerificationRequest)
}
// MARK: MXKeyVerificationRequestDidChangeNotification
private func registerKeyVerificationRequestChangeNotification() {
NotificationCenter.default.addObserver(self,
selector: #selector(keyVerificationRequestChangeNotification(notification:)),
name: .MXKeyVerificationRequestDidChange,
object: nil)
}
private func unregisterKeyVerificationRequestChangeNotification() {
NotificationCenter.default.removeObserver(self,
name: .MXKeyVerificationRequestDidChange,
object: nil)
}
@objc private func keyVerificationRequestChangeNotification(notification: Notification) {
guard let request = notification.object as? MXKeyVerificationRequest else {
return
}
guard let keyVerificationRequest = keyVerificationRequest,
keyVerificationRequest.requestId == request.requestId else {
return
}
if keyVerificationRequest.state == MXKeyVerificationRequestStateReady {
self.unregisterKeyVerificationRequestChangeNotification()
self.coordinatorDelegate?.keyVerificationSelfVerifyWaitViewModel(self,
didAcceptKeyVerificationRequest: keyVerificationRequest)
}
}
// MARK: MXKeyVerificationTransactionDidChange
private func registerTransactionDidStateChangeNotification() {