diff --git a/Signal/src/Models/SyncPushTokensJob.swift b/Signal/src/Models/SyncPushTokensJob.swift index c0ff03e5e..2e4d77e51 100644 --- a/Signal/src/Models/SyncPushTokensJob.swift +++ b/Signal/src/Models/SyncPushTokensJob.swift @@ -27,11 +27,13 @@ class SyncPushTokensJob: NSObject { func run() -> Promise { Logger.info("\(TAG) Starting.") - // Required to potentially prompt user for notifications settings - // before `requestPushTokens` will return. - self.pushManager.validateUserNotificationSettings() + let runPromise: Promise = DispatchQueue.main.promise { + // Required to potentially prompt user for notifications settings + // before `requestPushTokens` will return. + self.pushManager.validateUserNotificationSettings() - let runPromise: Promise = self.requestPushTokens().then { (pushToken: String, voipToken: String) in + return self.requestPushTokens() + }.then { (pushToken: String, voipToken: String) in var shouldUploadTokens = false if self.preferences.getPushToken() != pushToken || self.preferences.getVoipToken() != voipToken { diff --git a/Signal/src/network/PushManager.m b/Signal/src/network/PushManager.m index 0e44f98bc..65bd30480 100644 --- a/Signal/src/network/PushManager.m +++ b/Signal/src/network/PushManager.m @@ -290,6 +290,8 @@ NSString *const Signal_Message_MarkAsRead_Identifier = @"Signal_Message_MarkAsRe } - (void)requestPushTokenWithSuccess:(pushTokensSuccessBlock)success failure:(failedPushRegistrationBlock)failure { + AssertIsOnMainThread(); + if (!self.wantRemoteNotifications) { DDLogWarn(@"%@ Using fake push tokens", self.tag); success(@"fakePushToken", @"fakeVoipToken");