From 1b72c8b5d0a6f2a78c2300cf53e167e82488d64f Mon Sep 17 00:00:00 2001 From: cardoso Date: Mon, 3 Sep 2018 20:32:05 -0300 Subject: [PATCH] Fix tap in notification when in other server not opening correct room --- Rocket.Chat/Managers/AppManager.swift | 10 ++++++---- Rocket.Chat/Managers/PushManager.swift | 16 +++++++++++----- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/Rocket.Chat/Managers/AppManager.swift b/Rocket.Chat/Managers/AppManager.swift index ebfb4edafd..9027c68c9e 100644 --- a/Rocket.Chat/Managers/AppManager.swift +++ b/Rocket.Chat/Managers/AppManager.swift @@ -117,10 +117,10 @@ struct AppManager { extension AppManager { - static func changeSelectedServer(index: Int) { + static func changeSelectedServer(index: Int, completion: (() -> Void)? = nil) { guard index != DatabaseManager.selectedIndex else { DatabaseManager.changeDatabaseInstance(index: index) - reloadApp() + reloadApp(completion: completion) return } @@ -131,7 +131,7 @@ extension AppManager { AuthSettingsManager.shared.updateCachedSettings() AuthManager.recoverAuthIfNeeded() - reloadApp() + reloadApp(completion: completion) } } @@ -185,7 +185,7 @@ extension AppManager { } } - static func reloadApp() { + static func reloadApp(completion: (() -> Void)? = nil) { SocketManager.sharedInstance.connectionHandlers.removeAllObjects() SocketManager.disconnect { (_, _) in DispatchQueue.main.async { @@ -212,6 +212,8 @@ extension AppManager { } else { WindowManager.open(.auth(serverUrl: "", credentials: nil)) } + + completion?() } } } diff --git a/Rocket.Chat/Managers/PushManager.swift b/Rocket.Chat/Managers/PushManager.swift index 724dc6b6e6..7175e6308e 100644 --- a/Rocket.Chat/Managers/PushManager.swift +++ b/Rocket.Chat/Managers/PushManager.swift @@ -149,15 +149,21 @@ extension PushManager { // side effect: needed for Subscription.notificationSubscription() AppManager.initialRoomId = notification.roomId - if index != DatabaseManager.selectedIndex { - AppManager.changeSelectedServer(index: index) - } else { - if let auth = AuthManager.isAuthenticated() { + func openRoom() { + if let auth = AuthManager.isAuthenticated() { let openSubscription = MainSplitViewController.chatViewController?.subscription if let subscription = Subscription.notificationSubscription(auth: auth), subscription != openSubscription { AppManager.open(room: subscription, animated: false) } - } + } + } + + if index != DatabaseManager.selectedIndex { + AppManager.changeSelectedServer(index: index) { + openRoom() + } + } else { + openRoom() } guard let realm = DatabaseManager.databaseInstace(index: index) else {