diff --git a/Signal/src/Models/SyncPushTokensJob.swift b/Signal/src/Models/SyncPushTokensJob.swift index 0ea019339..38dcb5e55 100644 --- a/Signal/src/Models/SyncPushTokensJob.swift +++ b/Signal/src/Models/SyncPushTokensJob.swift @@ -12,6 +12,7 @@ class SyncPushTokensJob: NSObject { let accountManager: AccountManager let preferences: PropertyListPreferences let showAlerts: Bool + var uploadOnlyIfStale = true required init(pushManager: PushManager, accountManager: AccountManager, preferences: PropertyListPreferences, showAlerts: Bool) { self.pushManager = pushManager @@ -33,8 +34,14 @@ class SyncPushTokensJob: NSObject { self.pushManager.validateUserNotificationSettings() let runPromise: Promise = self.requestPushTokens().then { (pushToken: String, voipToken: String) in + var shouldUploadTokens = false + if self.preferences.getPushToken() != pushToken || self.preferences.getVoipToken() != voipToken { - Logger.debug("\(self.TAG) push tokens changed.") + Logger.debug("\(self.TAG) Push tokens changed.") + shouldUploadTokens = true + } else if !self.uploadOnlyIfStale { + Logger.debug("\(self.TAG) Uploading even though tokens didn't change.") + shouldUploadTokens = true } Logger.warn("\(self.TAG) lastAppVersion: \(AppVersion.instance().lastAppVersion), currentAppVersion: \(AppVersion.instance().currentAppVersion)") diff --git a/Signal/src/ViewControllers/AdvancedSettingsTableViewController.m b/Signal/src/ViewControllers/AdvancedSettingsTableViewController.m index 7d73f88e8..87301b214 100644 --- a/Signal/src/ViewControllers/AdvancedSettingsTableViewController.m +++ b/Signal/src/ViewControllers/AdvancedSettingsTableViewController.m @@ -129,10 +129,13 @@ typedef NS_ENUM(NSInteger, AdvancedSettingsTableViewControllerSection) { [DDLog flushLog]; [Pastelog submitLogs]; } else if ([tableView cellForRowAtIndexPath:indexPath] == self.registerPushCell) { - [OWSSyncPushTokensJob runWithPushManager:[PushManager sharedManager] - accountManager:[Environment getCurrent].accountManager - preferences:[Environment preferences] - showAlerts:YES]; + OWSSyncPushTokensJob *job = + [[OWSSyncPushTokensJob alloc] initWithPushManager:[PushManager sharedManager] + accountManager:[Environment getCurrent].accountManager + preferences:[Environment preferences] + showAlerts:YES]; + job.uploadOnlyIfStale = NO; + [job run]; } else { DDLogDebug(@"%@ Ignoring cell selection at indexPath: %@", self.tag, indexPath); }