diff --git a/Riot/AppDelegate.m b/Riot/AppDelegate.m index 620f0f84d..3bc4f8675 100644 --- a/Riot/AppDelegate.m +++ b/Riot/AppDelegate.m @@ -4176,13 +4176,11 @@ NSString *const kAppDelegateNetworkStatusDidChangeNotification = @"kAppDelegateN - (void)deviceVerificationCoordinatorBridgePresenterDelegateDidComplete:(DeviceVerificationCoordinatorBridgePresenter *)coordinatorBridgePresenter otherUserId:(NSString * _Nonnull)otherUserId otherDeviceId:(NSString * _Nonnull)otherDeviceId { - [deviceVerificationCoordinatorBridgePresenter dismissWithAnimated:YES]; - deviceVerificationCoordinatorBridgePresenter = nil; - - // TODO: Why? - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ + [deviceVerificationCoordinatorBridgePresenter dismissWithAnimated:YES completion:^{ [self checkPendingIncomingDeviceVerifications]; - }); + }]; + + deviceVerificationCoordinatorBridgePresenter = nil; } #pragma mark - GDPR consent diff --git a/Riot/Modules/DeviceVerification/DeviceVerificationCoordinatorBridgePresenter.swift b/Riot/Modules/DeviceVerification/DeviceVerificationCoordinatorBridgePresenter.swift index 08271b0e7..cc321c09f 100644 --- a/Riot/Modules/DeviceVerification/DeviceVerificationCoordinatorBridgePresenter.swift +++ b/Riot/Modules/DeviceVerification/DeviceVerificationCoordinatorBridgePresenter.swift @@ -70,12 +70,16 @@ final class DeviceVerificationCoordinatorBridgePresenter: NSObject { self.coordinator = deviceVerificationCoordinator } - func dismiss(animated: Bool) { + func dismiss(animated: Bool, completion: (() -> Void)?) { guard let coordinator = self.coordinator else { return } coordinator.toPresentable().dismiss(animated: animated) { self.coordinator = nil + + if let completion = completion { + completion() + } } } } diff --git a/Riot/Modules/EncryptionInfo/EncryptionInfoView.m b/Riot/Modules/EncryptionInfo/EncryptionInfoView.m index 3c9c1b596..4d858639c 100644 --- a/Riot/Modules/EncryptionInfo/EncryptionInfoView.m +++ b/Riot/Modules/EncryptionInfo/EncryptionInfoView.m @@ -73,7 +73,7 @@ - (void)deviceVerificationCoordinatorBridgePresenterDelegateDidComplete:(DeviceVerificationCoordinatorBridgePresenter * _Nonnull)coordinatorBridgePresenter otherUserId:(NSString * _Nonnull)otherUserId otherDeviceId:(NSString * _Nonnull)otherDeviceId { - [deviceVerificationCoordinatorBridgePresenter dismissWithAnimated:YES]; + [deviceVerificationCoordinatorBridgePresenter dismissWithAnimated:YES completion:nil]; deviceVerificationCoordinatorBridgePresenter = nil; // Eject like MXKEncryptionInfoView does diff --git a/Riot/Modules/Room/Members/Detail/RoomMemberDetailsViewController.m b/Riot/Modules/Room/Members/Detail/RoomMemberDetailsViewController.m index e88b1ee22..d84d669ec 100644 --- a/Riot/Modules/Room/Members/Detail/RoomMemberDetailsViewController.m +++ b/Riot/Modules/Room/Members/Detail/RoomMemberDetailsViewController.m @@ -1167,7 +1167,7 @@ - (void)deviceVerificationCoordinatorBridgePresenterDelegateDidComplete:(DeviceVerificationCoordinatorBridgePresenter *)coordinatorBridgePresenter otherUserId:(NSString * _Nonnull)otherUserId otherDeviceId:(NSString * _Nonnull)otherDeviceId { - [deviceVerificationCoordinatorBridgePresenter dismissWithAnimated:YES]; + [deviceVerificationCoordinatorBridgePresenter dismissWithAnimated:YES completion:nil]; deviceVerificationCoordinatorBridgePresenter = nil; } diff --git a/Riot/Modules/RoomKeyRequest/RoomKeyRequestViewController.m b/Riot/Modules/RoomKeyRequest/RoomKeyRequestViewController.m index 56ca126c1..b73d7c2fe 100644 --- a/Riot/Modules/RoomKeyRequest/RoomKeyRequestViewController.m +++ b/Riot/Modules/RoomKeyRequest/RoomKeyRequestViewController.m @@ -147,7 +147,7 @@ - (void)deviceVerificationCoordinatorBridgePresenterDelegateDidComplete:(DeviceVerificationCoordinatorBridgePresenter *)coordinatorBridgePresenter otherUserId:(NSString * _Nonnull)otherUserId otherDeviceId:(NSString * _Nonnull)otherDeviceId { - [deviceVerificationCoordinatorBridgePresenter dismissWithAnimated:YES]; + [deviceVerificationCoordinatorBridgePresenter dismissWithAnimated:YES completion:nil]; deviceVerificationCoordinatorBridgePresenter = nil; // Check device new status diff --git a/Riot/Modules/UserDevices/UsersDevicesViewController.m b/Riot/Modules/UserDevices/UsersDevicesViewController.m index c37cfa040..224b620b3 100644 --- a/Riot/Modules/UserDevices/UsersDevicesViewController.m +++ b/Riot/Modules/UserDevices/UsersDevicesViewController.m @@ -239,7 +239,7 @@ - (void)deviceVerificationCoordinatorBridgePresenterDelegateDidComplete:(DeviceVerificationCoordinatorBridgePresenter *)coordinatorBridgePresenter otherUserId:(NSString * _Nonnull)otherUserId otherDeviceId:(NSString * _Nonnull)otherDeviceId { - [deviceVerificationCoordinatorBridgePresenter dismissWithAnimated:YES]; + [deviceVerificationCoordinatorBridgePresenter dismissWithAnimated:YES completion:nil]; deviceVerificationCoordinatorBridgePresenter = nil; // Update our map