Skip to content

Commit 0a3d18e

Browse files
author
AR Abdul Azeez
committed
removing features node in ConfigModel
1 parent ce19184 commit 0a3d18e

6 files changed

Lines changed: 12 additions & 64 deletions

File tree

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/backend/IParamsBackendService.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ internal class ParamsObject(
3535
var locationShared: Boolean? = null,
3636
var requiresUserPrivacyConsent: Boolean? = null,
3737
var opRepoExecutionInterval: Long? = null,
38-
val features: List<String> = emptyList(),
3938
var influenceParams: InfluenceParamsObject,
4039
var fcmParams: FCMParamsObject,
4140
val remoteLoggingParams: RemoteLoggingParamsObject,

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/backend/impl/ParamsBackendService.kt

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -68,19 +68,6 @@ internal class ParamsBackendService(
6868
)
6969
}
7070

71-
val features =
72-
responseJson.optJSONArray("features")
73-
?.let { featuresJson ->
74-
buildList {
75-
for (i in 0 until featuresJson.length()) {
76-
val featureName = featuresJson.optString(i, "")
77-
if (featureName.isNotBlank()) {
78-
add(featureName)
79-
}
80-
}
81-
}
82-
} ?: emptyList()
83-
8471
return ParamsObject(
8572
googleProjectNumber = responseJson.safeString("android_sender_id"),
8673
enterprise = responseJson.safeBool("enterp"),
@@ -97,7 +84,6 @@ internal class ParamsBackendService(
9784
requiresUserPrivacyConsent = responseJson.safeBool("requires_user_privacy_consent"),
9885
// TODO: New
9986
opRepoExecutionInterval = responseJson.safeLong("oprepo_execution_interval"),
100-
features = features,
10187
influenceParams = influenceParams ?: InfluenceParamsObject(),
10288
fcmParams = fcmParams ?: FCMParamsObject(),
10389
remoteLoggingParams = remoteLoggingParams ?: RemoteLoggingParamsObject(),

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

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -290,22 +290,11 @@ class ConfigModel : Model() {
290290
setBooleanProperty(::clearGroupOnSummaryClick.name, value)
291291
}
292292

293-
/**
294-
* Feature ids from the main OneSignal config / params response (legacy channel).
295-
* Presence of a name means the feature is on. This list is distinct from [sdkRemoteFeatureFlags];
296-
* [com.onesignal.core.internal.features.FeatureManager] unions both (plus any local test overrides).
297-
*/
298-
var features: List<String>
299-
get() = getListProperty(::features.name) { emptyList() }
300-
set(value) {
301-
setListProperty(::features.name, value)
302-
}
303-
304293
/**
305294
* Feature ids from the Turbine SDK feature-flags HTTP endpoint
306295
* ([com.onesignal.core.internal.backend.IFeatureFlagsBackendService]), updated while the app is
307-
* foreground. Unioned with [features] in [com.onesignal.core.internal.features.FeatureManager]
308-
* when evaluating [com.onesignal.core.internal.features.FeatureFlag] entries.
296+
* foreground. [com.onesignal.core.internal.features.FeatureManager] unions these with any local
297+
* test overrides when evaluating [com.onesignal.core.internal.features.FeatureFlag] entries.
309298
*/
310299
var sdkRemoteFeatureFlags: List<String>
311300
get() = getListProperty(::sdkRemoteFeatureFlags.name) { emptyList() }
@@ -369,7 +358,7 @@ class ConfigModel : Model() {
369358
property: String,
370359
jsonArray: JSONArray,
371360
): List<*>? {
372-
if (property == ::features.name || property == ::sdkRemoteFeatureFlags.name) {
361+
if (property == ::sdkRemoteFeatureFlags.name) {
373362
return buildList {
374363
for (i in 0 until jsonArray.length()) {
375364
val featureName = jsonArray.optString(i, "")

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@ internal class ConfigModelStoreListener(
9595
params.locationShared?.let { config.locationShared = it }
9696
params.requiresUserPrivacyConsent?.let { config.consentRequired = it }
9797
params.opRepoExecutionInterval?.let { config.opRepoExecutionInterval = it }
98-
config.features = params.features
9998
params.influenceParams.notificationLimit?.let { config.influenceParams.notificationLimit = it }
10099
params.influenceParams.indirectNotificationAttributionWindow?.let { config.influenceParams.indirectNotificationAttributionWindow = it }
101100
params.influenceParams.iamLimit?.let { config.influenceParams.iamLimit = it }

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/features/FeatureManager.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,7 @@ internal class FeatureManager(
6969
args: ModelChangedArgs,
7070
tag: String,
7171
) {
72-
if (args.property == ConfigModel::features.name ||
73-
args.property == ConfigModel::sdkRemoteFeatureFlags.name ||
72+
if (args.property == ConfigModel::sdkRemoteFeatureFlags.name ||
7473
args.property == ConfigModel::sdkRemoteFeatureFlagMetadata.name
7574
) {
7675
Logging.debug("OneSignal: FeatureManager.onModelUpdated(property=${args.property}, tag=$tag)")
@@ -89,8 +88,7 @@ internal class FeatureManager(
8988
) {
9089
val enabledFeatureKeys =
9190
(
92-
model.features.map { canonicalizeFeatureKey(it) } +
93-
model.sdkRemoteFeatureFlags.map { canonicalizeFeatureKey(it) } +
91+
model.sdkRemoteFeatureFlags.map { canonicalizeFeatureKey(it) } +
9492
localFeatureOverrides.map { canonicalizeFeatureKey(it) }
9593
).toSet()
9694
if (localFeatureOverrides.isNotEmpty()) {

OneSignalSDK/onesignal/core/src/test/java/com/onesignal/core/internal/features/FeatureManagerTests.kt

Lines changed: 7 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -22,27 +22,9 @@ class FeatureManagerTests : FunSpec({
2222
every { model.sdkRemoteFeatureFlagMetadata } returns null
2323
}
2424

25-
test("initial state should enable BACKGROUND_THREADING when feature is present") {
26-
// Given
27-
val initialModel = mockk<ConfigModel>()
28-
stubConfigModel(initialModel)
29-
every { initialModel.features } returns listOf(FeatureFlag.SDK_BACKGROUND_THREADING.key)
30-
val configModelStore = mockk<ConfigModelStore>()
31-
every { configModelStore.model } returns initialModel
32-
every { configModelStore.subscribe(any()) } just runs
33-
34-
// When
35-
val manager = FeatureManager(configModelStore)
36-
37-
// Then
38-
manager.isEnabled(FeatureFlag.SDK_BACKGROUND_THREADING) shouldBe true
39-
ThreadingMode.useBackgroundThreading shouldBe true
40-
}
41-
42-
test("initial state enables BACKGROUND_THREADING when key only exists on sdk remote flags") {
25+
test("initial state enables BACKGROUND_THREADING when key is present in sdk remote flags") {
4326
val initialModel = mockk<ConfigModel>()
4427
stubConfigModel(initialModel)
45-
every { initialModel.features } returns emptyList()
4628
every { initialModel.sdkRemoteFeatureFlags } returns listOf(FeatureFlag.SDK_BACKGROUND_THREADING.key)
4729
val configModelStore = mockk<ConfigModelStore>()
4830
every { configModelStore.model } returns initialModel
@@ -57,7 +39,6 @@ class FeatureManagerTests : FunSpec({
5739
test("initial state enables BACKGROUND_THREADING when remote key differs only by letter case") {
5840
val initialModel = mockk<ConfigModel>()
5941
stubConfigModel(initialModel)
60-
every { initialModel.features } returns emptyList()
6142
every { initialModel.sdkRemoteFeatureFlags } returns listOf("SDK_Background_Threading")
6243
val configModelStore = mockk<ConfigModelStore>()
6344
every { configModelStore.model } returns initialModel
@@ -73,15 +54,14 @@ class FeatureManagerTests : FunSpec({
7354
// Given
7455
val initialModel = mockk<ConfigModel>()
7556
stubConfigModel(initialModel)
76-
every { initialModel.features } returns emptyList()
7757
val configModelStore = mockk<ConfigModelStore>()
7858
every { configModelStore.model } returns initialModel
7959
every { configModelStore.subscribe(any()) } just runs
8060
val manager = FeatureManager(configModelStore)
8161

8262
val updatedModel = mockk<ConfigModel>()
8363
stubConfigModel(updatedModel)
84-
every { updatedModel.features } returns listOf(FeatureFlag.SDK_BACKGROUND_THREADING.key)
64+
every { updatedModel.sdkRemoteFeatureFlags } returns listOf(FeatureFlag.SDK_BACKGROUND_THREADING.key)
8565

8666
// When
8767
manager.onModelReplaced(updatedModel, ModelChangeTags.HYDRATE)
@@ -95,18 +75,17 @@ class FeatureManagerTests : FunSpec({
9575
// Given
9676
val model = mockk<ConfigModel>()
9777
stubConfigModel(model)
98-
every { model.features } returns emptyList()
9978
val configModelStore = mockk<ConfigModelStore>()
10079
every { configModelStore.model } returns model
10180
every { configModelStore.subscribe(any()) } just runs
10281
val manager = FeatureManager(configModelStore)
10382

104-
every { model.features } returns listOf(FeatureFlag.SDK_BACKGROUND_THREADING.key)
83+
every { model.sdkRemoteFeatureFlags } returns listOf(FeatureFlag.SDK_BACKGROUND_THREADING.key)
10584

10685
// When
10786
manager.onModelUpdated(
10887
args = mockk {
109-
every { property } returns ConfigModel::features.name
88+
every { property } returns ConfigModel::sdkRemoteFeatureFlags.name
11089
},
11190
tag = ModelChangeTags.NORMAL
11291
)
@@ -120,18 +99,18 @@ class FeatureManagerTests : FunSpec({
12099
// Given
121100
val model = mockk<ConfigModel>()
122101
stubConfigModel(model)
123-
every { model.features } returns listOf(FeatureFlag.SDK_BACKGROUND_THREADING.key)
102+
every { model.sdkRemoteFeatureFlags } returns listOf(FeatureFlag.SDK_BACKGROUND_THREADING.key)
124103
val configModelStore = mockk<ConfigModelStore>()
125104
every { configModelStore.model } returns model
126105
every { configModelStore.subscribe(any()) } just runs
127106
val manager = FeatureManager(configModelStore)
128107

129-
every { model.features } returns emptyList()
108+
every { model.sdkRemoteFeatureFlags } returns emptyList()
130109

131110
// When
132111
manager.onModelUpdated(
133112
args = mockk {
134-
every { property } returns ConfigModel::features.name
113+
every { property } returns ConfigModel::sdkRemoteFeatureFlags.name
135114
},
136115
tag = ModelChangeTags.NORMAL
137116
)
@@ -144,7 +123,6 @@ class FeatureManagerTests : FunSpec({
144123
test("remoteFeatureFlagMetadata returns parsed JSON from config") {
145124
val initialModel = mockk<ConfigModel>()
146125
stubConfigModel(initialModel)
147-
every { initialModel.features } returns emptyList()
148126
every { initialModel.sdkRemoteFeatureFlagMetadata } returns """{"X":{"note":"y"}}"""
149127
val configModelStore = mockk<ConfigModelStore>()
150128
every { configModelStore.model } returns initialModel
@@ -159,7 +137,6 @@ class FeatureManagerTests : FunSpec({
159137
test("remoteFeatureFlagMetadata is null when config has no stored metadata") {
160138
val initialModel = mockk<ConfigModel>()
161139
stubConfigModel(initialModel)
162-
every { initialModel.features } returns emptyList()
163140
every { initialModel.sdkRemoteFeatureFlagMetadata } returns null
164141
val configModelStore = mockk<ConfigModelStore>()
165142
every { configModelStore.model } returns initialModel

0 commit comments

Comments
 (0)