Skip to content

Commit 0fe7098

Browse files
AR Abdul Azeezcursoragent
andcommitted
fix: [SDK-5146] stop clearing dashboard sender on appId assignment
Wiping googleProjectNumber and isInitializedWithRemote on appId write stalls FCM registration. There is no runtime app ID switch, so snd can keep using the hydrated sender. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 4d528d1 commit 0fe7098

5 files changed

Lines changed: 2 additions & 46 deletions

File tree

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/config/ConfigModel.kt

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -515,13 +515,3 @@ class RemoteLoggingConfigModel(
515515
setBooleanProperty(::isEnabled.name, value)
516516
}
517517
}
518-
519-
internal fun ConfigModel.forgetDashboardSenderIfAppIdDiffers(
520-
previousAppId: String?,
521-
newAppId: String,
522-
) {
523-
if (!previousAppId.isNullOrEmpty() && previousAppId != newAppId) {
524-
googleProjectNumber = null
525-
isInitializedWithRemote = false
526-
}
527-
}

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/config/impl/ConfigModelStoreListener.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import com.onesignal.common.threading.suspendifyOnIO
88
import com.onesignal.core.internal.backend.IParamsBackendService
99
import com.onesignal.core.internal.config.ConfigModel
1010
import com.onesignal.core.internal.config.ConfigModelStore
11-
import com.onesignal.core.internal.config.forgetDashboardSenderIfAppIdDiffers
1211
import com.onesignal.core.internal.startup.IStartableService
1312
import com.onesignal.debug.internal.logging.Logging
1413
import com.onesignal.user.internal.jwt.JwtRequirement
@@ -41,8 +40,6 @@ internal class ConfigModelStoreListener(
4140
return
4241
}
4342

44-
val newAppId = args.newValue as? String ?: return
45-
_configModelStore.model.forgetDashboardSenderIfAppIdDiffers(args.oldValue as? String, newAppId)
4643
fetchParams()
4744
}
4845

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/internal/OneSignalImp.kt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import com.onesignal.core.internal.application.IApplicationService
1818
import com.onesignal.core.internal.application.impl.ApplicationService
1919
import com.onesignal.core.internal.config.ConfigModel
2020
import com.onesignal.core.internal.config.ConfigModelStore
21-
import com.onesignal.core.internal.config.forgetDashboardSenderIfAppIdDiffers
2221
import com.onesignal.core.internal.config.impl.IdentityVerificationService
2322
import com.onesignal.core.internal.features.IFeatureManager
2423
import com.onesignal.core.internal.operations.IOperationRepo
@@ -431,11 +430,7 @@ internal class OneSignalImp : IOneSignal,
431430
completeInit(InitState.FAILED)
432431
return false
433432
}
434-
val newAppId = result.appId!!
435-
val previousAppId =
436-
if (configModel.hasProperty(ConfigModel::appId.name)) configModel.appId else null
437-
configModel.forgetDashboardSenderIfAppIdDiffers(previousAppId, newAppId)
438-
configModel.appId = newAppId
433+
configModel.appId = result.appId!! // safe because failed is false
439434
val forceCreateUser = result.forceCreateUser
440435

441436
updateConfig()

OneSignalSDK/onesignal/core/src/test/java/com/onesignal/core/internal/config/impl/ConfigModelStoreListenerTests.kt

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ package com.onesignal.core.internal.config.impl
33
import com.onesignal.core.internal.backend.IParamsBackendService
44
import com.onesignal.core.internal.backend.ParamsObject
55
import com.onesignal.core.internal.backend.RemoteLoggingParamsObject
6-
import com.onesignal.core.internal.config.ConfigModel
76
import com.onesignal.core.internal.config.ConfigModelStore
8-
import com.onesignal.core.internal.config.forgetDashboardSenderIfAppIdDiffers
97
import com.onesignal.debug.LogLevel
108
import com.onesignal.mocks.IOMockHelper
119
import com.onesignal.mocks.IOMockHelper.awaitIO
@@ -139,28 +137,4 @@ class ConfigModelStoreListenerTests : FunSpec({
139137
store.model.sdkRemoteFeatureFlags shouldBe listOf("sdk_background_threading")
140138
store.model.sdkRemoteFeatureFlagMetadata shouldBe """{"sdk_background_threading":{"x":1}}"""
141139
}
142-
143-
test("forgetDashboardSenderIfAppIdDiffers keeps sender when appId is unchanged") {
144-
val model = ConfigModel()
145-
model.appId = "app-a"
146-
model.googleProjectNumber = "111"
147-
model.isInitializedWithRemote = true
148-
149-
model.forgetDashboardSenderIfAppIdDiffers("app-a", "app-a")
150-
151-
model.googleProjectNumber shouldBe "111"
152-
model.isInitializedWithRemote shouldBe true
153-
}
154-
155-
test("forgetDashboardSenderIfAppIdDiffers drops sender when appId changes") {
156-
val model = ConfigModel()
157-
model.appId = "app-a"
158-
model.googleProjectNumber = "111"
159-
model.isInitializedWithRemote = true
160-
161-
model.forgetDashboardSenderIfAppIdDiffers("app-a", "app-b")
162-
163-
model.googleProjectNumber shouldBe null
164-
model.isInitializedWithRemote shouldBe false
165-
}
166140
})

OneSignalSDK/onesignal/core/src/test/java/com/onesignal/core/internal/device/FidEnvReaderTests.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ class FidEnvReaderTests : FunSpec({
7777
header.shouldContain("snd=-")
7878
}
7979

80-
test("snd stays unknown until dashboard params for this appId have hydrated") {
80+
test("snd stays unknown until dashboard params have hydrated") {
8181
val applicationService = MockHelper.applicationService()
8282
every { applicationService.appContext } returns context
8383
val configStore =

0 commit comments

Comments
 (0)