From 23be676416c0301c4de3b750e102b2196ad4d8e9 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 19 Aug 2025 10:21:40 +0100 Subject: [PATCH 1/2] MS-1112 Always attempt showing foreground notifications for background workers --- .../core/tools/utils/BatteryOptimizationUtils.kt | 12 ------------ .../com/simprints/core/workers/SimCoroutineWorker.kt | 4 ---- 2 files changed, 16 deletions(-) delete mode 100644 infra/core/src/main/java/com/simprints/core/tools/utils/BatteryOptimizationUtils.kt diff --git a/infra/core/src/main/java/com/simprints/core/tools/utils/BatteryOptimizationUtils.kt b/infra/core/src/main/java/com/simprints/core/tools/utils/BatteryOptimizationUtils.kt deleted file mode 100644 index 6135215e7a..0000000000 --- a/infra/core/src/main/java/com/simprints/core/tools/utils/BatteryOptimizationUtils.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.simprints.core.tools.utils - -import android.content.Context -import android.os.PowerManager -import com.simprints.core.ExcludedFromGeneratedTestCoverageReports - -@ExcludedFromGeneratedTestCoverageReports("Platform glue code") -object BatteryOptimizationUtils { - fun isFollowingBatteryOptimizations(context: Context): Boolean = (context.getSystemService(Context.POWER_SERVICE) as PowerManager) - .isIgnoringBatteryOptimizations(context.packageName) - .not() -} diff --git a/infra/core/src/main/java/com/simprints/core/workers/SimCoroutineWorker.kt b/infra/core/src/main/java/com/simprints/core/workers/SimCoroutineWorker.kt index 912b96f5c7..1c95968046 100644 --- a/infra/core/src/main/java/com/simprints/core/workers/SimCoroutineWorker.kt +++ b/infra/core/src/main/java/com/simprints/core/workers/SimCoroutineWorker.kt @@ -13,7 +13,6 @@ import androidx.work.Data import androidx.work.ForegroundInfo import androidx.work.WorkerParameters import com.simprints.core.ExcludedFromGeneratedTestCoverageReports -import com.simprints.core.tools.utils.BatteryOptimizationUtils import com.simprints.infra.logging.Simber import com.simprints.infra.network.exceptions.NetworkConnectionException import com.simprints.infra.resources.R @@ -59,9 +58,6 @@ abstract class SimCoroutineWorker( protected suspend fun showProgressNotification() { try { - if (BatteryOptimizationUtils.isFollowingBatteryOptimizations(context)) { - return - } setForeground(getForegroundInfo()) } catch (setForegroundException: Throwable) { // Setting foreground (showing the notification) may be restricted by the system From 09af811d5c012bdb4990dca971b4562b4fea9c31 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 20 Aug 2025 16:13:02 +0100 Subject: [PATCH 2/2] MS-1112 Always attempt showing foreground notifications for workers - test fix --- .../sync/master/EventSyncMasterWorkerTest.kt | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/infra/event-sync/src/test/java/com/simprints/infra/eventsync/sync/master/EventSyncMasterWorkerTest.kt b/infra/event-sync/src/test/java/com/simprints/infra/eventsync/sync/master/EventSyncMasterWorkerTest.kt index c90bb951be..4237bd3cda 100644 --- a/infra/event-sync/src/test/java/com/simprints/infra/eventsync/sync/master/EventSyncMasterWorkerTest.kt +++ b/infra/event-sync/src/test/java/com/simprints/infra/eventsync/sync/master/EventSyncMasterWorkerTest.kt @@ -135,21 +135,24 @@ internal class EventSyncMasterWorkerTest { every { projectConfiguration.synchronization } returns synchronizationConfiguration coEvery { configManager.getProjectConfiguration() } returns projectConfiguration - masterWorker = EventSyncMasterWorker( - appContext = ctx, - params = mockk(relaxed = true) { - every { tags } returns setOf(MASTER_SYNC_SCHEDULER_PERIODIC_TIME) - }, - downSyncWorkerBuilder = downSyncWorkerBuilder, - upSyncWorkerBuilder = upSyncWorkerBuilder, - configManager = configManager, - eventSyncCache = eventSyncCache, - eventSyncSubMasterWorkersBuilder = eventSyncSubMasterWorkersBuilder, - timeHelper = timeHelper, - dispatcher = testCoroutineRule.testCoroutineDispatcher, - securityManager = securityManager, - eventRepository = eventRepository, + masterWorker = spyk( + EventSyncMasterWorker( + appContext = ctx, + params = mockk(relaxed = true) { + every { tags } returns setOf(MASTER_SYNC_SCHEDULER_PERIODIC_TIME) + }, + downSyncWorkerBuilder = downSyncWorkerBuilder, + upSyncWorkerBuilder = upSyncWorkerBuilder, + configManager = configManager, + eventSyncCache = eventSyncCache, + eventSyncSubMasterWorkersBuilder = eventSyncSubMasterWorkersBuilder, + timeHelper = timeHelper, + dispatcher = testCoroutineRule.testCoroutineDispatcher, + securityManager = securityManager, + eventRepository = eventRepository, + ) ) + coEvery { masterWorker["showProgressNotification"]() } returns Unit } @Test