From 4cb7cb107970c15b39c54a131fff4adbc0a225df Mon Sep 17 00:00:00 2001 From: Elliot Mawby Date: Fri, 14 Jun 2024 10:45:50 -0700 Subject: [PATCH] Start with polling interval as the background value This protects init in the background onFocus is called immediately if the app is in focus and wakes so we start polling correctly update unit test to account for this --- .../impl/NotificationPermissionController.kt | 2 +- .../NotificationPermissionControllerTests.kt | 25 ++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/OneSignalSDK/onesignal/notifications/src/main/java/com/onesignal/notifications/internal/permissions/impl/NotificationPermissionController.kt b/OneSignalSDK/onesignal/notifications/src/main/java/com/onesignal/notifications/internal/permissions/impl/NotificationPermissionController.kt index e878258c5..38375986c 100644 --- a/OneSignalSDK/onesignal/notifications/src/main/java/com/onesignal/notifications/internal/permissions/impl/NotificationPermissionController.kt +++ b/OneSignalSDK/onesignal/notifications/src/main/java/com/onesignal/notifications/internal/permissions/impl/NotificationPermissionController.kt @@ -77,7 +77,7 @@ internal class NotificationPermissionController( init { this.enabled = notificationsEnabled() _requestPermission.registerAsCallback(PERMISSION_TYPE, this) - pollingWaitInterval = _configModelStore.model.foregroundFetchNotificationPermissionInterval + pollingWaitInterval = _configModelStore.model.backgroundFetchNotificationPermissionInterval registerPollingLifecycleListener() coroutineScope.launch { pollForPermission() diff --git a/OneSignalSDK/onesignal/notifications/src/test/java/com/onesignal/notifications/internal/permission/NotificationPermissionControllerTests.kt b/OneSignalSDK/onesignal/notifications/src/test/java/com/onesignal/notifications/internal/permission/NotificationPermissionControllerTests.kt index f5ff0260a..d5228c745 100644 --- a/OneSignalSDK/onesignal/notifications/src/test/java/com/onesignal/notifications/internal/permission/NotificationPermissionControllerTests.kt +++ b/OneSignalSDK/onesignal/notifications/src/test/java/com/onesignal/notifications/internal/permission/NotificationPermissionControllerTests.kt @@ -8,7 +8,6 @@ import com.onesignal.core.internal.permissions.IRequestPermissionService import com.onesignal.core.internal.preferences.IPreferencesService import com.onesignal.debug.LogLevel import com.onesignal.debug.internal.logging.Logging -import com.onesignal.mocks.AndroidMockHelper import com.onesignal.mocks.MockHelper import com.onesignal.notifications.internal.permissions.INotificationPermissionChangedHandler import com.onesignal.notifications.internal.permissions.impl.NotificationPermissionController @@ -39,9 +38,14 @@ class NotificationPermissionControllerTests : FunSpec({ val mockRequestPermissionService = mockk() every { mockRequestPermissionService.registerAsCallback(any(), any()) } just runs val mockPreferenceService = mockk() - + val focusHandlerList = mutableListOf() + val mockAppService = mockk() + every { mockAppService.addApplicationLifecycleHandler(any()) } answers { + focusHandlerList.add(firstArg()) + } + every { mockAppService.appContext } returns ApplicationProvider.getApplicationContext() var handlerFired = false - val notificationPermissionController = NotificationPermissionController(AndroidMockHelper.applicationService(), mockRequestPermissionService, AndroidMockHelper.applicationService(), mockPreferenceService, MockHelper.configModelStore()) + val notificationPermissionController = NotificationPermissionController(mockAppService, mockRequestPermissionService, mockAppService, mockPreferenceService, MockHelper.configModelStore()) notificationPermissionController.subscribe( object : INotificationPermissionChangedHandler { @@ -50,6 +54,11 @@ class NotificationPermissionControllerTests : FunSpec({ } }, ) + // call onFocus to set the proper polling interval. + // This happens when registering the lifecycle handler + for (focusHandler in focusHandlerList) { + focusHandler.onFocus() + } // When // permission changes @@ -83,6 +92,11 @@ class NotificationPermissionControllerTests : FunSpec({ } }, ) + // call onFocus to set the proper polling interval. + // This happens when registering the lifecycle handler + for (focusHandler in handlerList) { + focusHandler.onFocus() + } // When // the app has loses focus @@ -121,6 +135,11 @@ class NotificationPermissionControllerTests : FunSpec({ } }, ) + // call onFocus to set the proper polling interval. + // This happens when registering the lifecycle handler + for (focusHandler in handlerList) { + focusHandler.onFocus() + } // When // the app loses focus