diff --git a/src/org/thoughtcrime/securesms/ApplicationContext.java b/src/org/thoughtcrime/securesms/ApplicationContext.java index d8aa43a130..badff0df5c 100644 --- a/src/org/thoughtcrime/securesms/ApplicationContext.java +++ b/src/org/thoughtcrime/securesms/ApplicationContext.java @@ -205,7 +205,7 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc // Loki - Set up public chat manager lokiPublicChatManager = new LokiPublicChatManager(this); updatePublicChatProfilePictureIfNeeded(); - registerForFCMIfNeeded(); + registerForFCMIfNeeded(false); } @Override @@ -462,7 +462,7 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc }, this); } - public void registerForFCMIfNeeded() { + public void registerForFCMIfNeeded(Boolean force) { Context context = this; FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener(task -> { if (!task.isSuccessful()) { @@ -473,7 +473,7 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc String userHexEncodedPublicKey = TextSecurePreferences.getLocalNumber(context); if (userHexEncodedPublicKey == null) return; if (TextSecurePreferences.isUsingFCM(this)) { - LokiPushNotificationManager.register(token, userHexEncodedPublicKey, context); + LokiPushNotificationManager.register(token, userHexEncodedPublicKey, context, force); } else { LokiPushNotificationManager.unregister(token, context); } diff --git a/src/org/thoughtcrime/securesms/loki/LokiPushNotificationManager.kt b/src/org/thoughtcrime/securesms/loki/LokiPushNotificationManager.kt index 3fa225dca8..6358fdcb43 100644 --- a/src/org/thoughtcrime/securesms/loki/LokiPushNotificationManager.kt +++ b/src/org/thoughtcrime/securesms/loki/LokiPushNotificationManager.kt @@ -47,10 +47,10 @@ object LokiPushNotificationManager { } @JvmStatic - fun register(token: String, hexEncodedPublicKey: String, context: Context?) { + fun register(token: String, hexEncodedPublicKey: String, context: Context?, force: Boolean) { val oldToken = TextSecurePreferences.getFCMToken(context) val lastUploadDate = TextSecurePreferences.getLastFCMUploadTime(context) - if (token == oldToken && System.currentTimeMillis() - lastUploadDate < tokenExpirationInterval) { return } + if (!force && token == oldToken && System.currentTimeMillis() - lastUploadDate < tokenExpirationInterval) { return } val parameters = mapOf( "token" to token, "pubKey" to hexEncodedPublicKey ) val url = "${server}/register" val body = RequestBody.create(MediaType.get("application/json"), JsonUtil.toJson(parameters)) diff --git a/src/org/thoughtcrime/securesms/loki/redesign/activities/HomeActivity.kt b/src/org/thoughtcrime/securesms/loki/redesign/activities/HomeActivity.kt index c351bf0a24..15275280ce 100644 --- a/src/org/thoughtcrime/securesms/loki/redesign/activities/HomeActivity.kt +++ b/src/org/thoughtcrime/securesms/loki/redesign/activities/HomeActivity.kt @@ -162,7 +162,7 @@ class HomeActivity : PassphraseRequiredActionBarActivity, ConversationClickListe bottomSheet.onConfirmTapped = { isUsingFCM -> TextSecurePreferences.setHasSeenPNModeSheet(this, true) TextSecurePreferences.setIsUsingFCM(this, isUsingFCM) - ApplicationContext.getInstance(this).registerForFCMIfNeeded() + ApplicationContext.getInstance(this).registerForFCMIfNeeded(true) bottomSheet.dismiss() } bottomSheet.onSkipTapped = { diff --git a/src/org/thoughtcrime/securesms/loki/redesign/activities/PNModeActivity.kt b/src/org/thoughtcrime/securesms/loki/redesign/activities/PNModeActivity.kt index b81a622bac..2aa0a403dd 100644 --- a/src/org/thoughtcrime/securesms/loki/redesign/activities/PNModeActivity.kt +++ b/src/org/thoughtcrime/securesms/loki/redesign/activities/PNModeActivity.kt @@ -103,7 +103,7 @@ class PNModeActivity : BaseActionBarActivity() { val servers = DatabaseFactory.getLokiThreadDatabase(this).getAllPublicChatServers() servers.forEach { publicChatAPI.setDisplayName(displayName, it) } } - application.registerForFCMIfNeeded() + application.registerForFCMIfNeeded(true) val intent = Intent(this, HomeActivity::class.java) intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK show(intent) diff --git a/src/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java b/src/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java index 795874f406..0ec4c0efdc 100644 --- a/src/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java +++ b/src/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java @@ -39,7 +39,7 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme this.findPreference(fcmKey) .setOnPreferenceChangeListener((preference, newValue) -> { TextSecurePreferences.setIsUsingFCM(getContext(), (boolean) newValue); - ApplicationContext.getInstance(getContext()).registerForFCMIfNeeded(); + ApplicationContext.getInstance(getContext()).registerForFCMIfNeeded(true); return true; }); diff --git a/src/org/thoughtcrime/securesms/service/PushNotificationService.kt b/src/org/thoughtcrime/securesms/service/PushNotificationService.kt index 20b206c4a2..0fb0c14319 100644 --- a/src/org/thoughtcrime/securesms/service/PushNotificationService.kt +++ b/src/org/thoughtcrime/securesms/service/PushNotificationService.kt @@ -16,7 +16,7 @@ class PushNotificationService : FirebaseMessagingService() { super.onNewToken(token) Log.d("Loki", "New FCM token: $token.") val userHexEncodedPublicKey = TextSecurePreferences.getLocalNumber(this) ?: return - LokiPushNotificationManager.register(token, userHexEncodedPublicKey, this) + LokiPushNotificationManager.register(token, userHexEncodedPublicKey, this, false) } override fun onMessageReceived(message: RemoteMessage) {