diff --git a/app/src/main/java/org/thoughtcrime/securesms/gcm/FcmFetchManager.kt b/app/src/main/java/org/thoughtcrime/securesms/gcm/FcmFetchManager.kt index 65e4421de6..cdadc2b63f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/gcm/FcmFetchManager.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/gcm/FcmFetchManager.kt @@ -72,6 +72,13 @@ object FcmFetchManager { return true } + @JvmStatic + fun isForegroundStarted(): Boolean { + synchronized(this) { + return startedForeground + } + } + private fun fetch(context: Context) { retrieveMessages(context) @@ -95,6 +102,25 @@ object FcmFetchManager { } } + @JvmStatic + fun tryLegacyFallback(context: Context) { + synchronized(this) { + if (startedForeground) { + val performedReplace = EXECUTOR.enqueue { fetch(context) } + + if (performedReplace) { + Log.i(TAG, "Legacy fallback: already have one running and one enqueued. Ignoring.") + } else { + activeCount++ + Log.i(TAG, "Legacy fallback: Incrementing active count to $activeCount") + } + return + } + } + Log.i(TAG, "No foreground running, performing legacy fallback") + retrieveMessages(context) + } + @JvmStatic fun retrieveMessages(context: Context) { val success = ApplicationDependencies.getBackgroundMessageRetriever().retrieveMessages(context, WebSocketStrategy()) diff --git a/app/src/main/java/org/thoughtcrime/securesms/gcm/FcmReceiveService.java b/app/src/main/java/org/thoughtcrime/securesms/gcm/FcmReceiveService.java index cb226c5ef1..81fc837da2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/gcm/FcmReceiveService.java +++ b/app/src/main/java/org/thoughtcrime/securesms/gcm/FcmReceiveService.java @@ -102,7 +102,7 @@ public class FcmReceiveService extends FirebaseMessagingService { if (!enqueueSuccessful) { Log.w(TAG, "Unable to start service. Falling back to legacy approach."); - FcmFetchManager.retrieveMessages(context); + FcmFetchManager.tryLegacyFallback(context); } }