Skip to content

Commit 2b4cf31

Browse files
authored
refactor: KitManagerImpl user-attribute forwarding and UserAttributeListener cleanup (#693)
* Add activeKits() helper and unit test Introduce activeKits() to return non-disabled kit integrations from the providers map. Add KitManagerImplTest.testActiveKitsExcludesDisabled to verify disabled kits are omitted. Made-with: Cursor * Refactor KitManagerImpl user-attribute and identity forwarding Use activeKits() for user attribute and identity paths; inline former setUserAttribute helpers to avoid duplicate isDisabled checks. Flatten syncUserIdentities with early returns and drop redundant null check on identities map. Made-with: Cursor * UserAttributeListener: expose kit identity; use activeKits in onUserAttributesReceived Declare getConfiguration() and getName() on UserAttributeListener so callers can access kit metadata consistently. Route onUserAttributesReceived through activeKits() and align variable naming with other active-kit paths. Made-with: Cursor * Remove FilteredMParticleUser from UserAttributeListener callbacks Drop the user parameter from KitIntegration.UserAttributeListener methods; update KitManagerImpl forwarding, instrumented/unit tests, and kit implementations (Adobe, AppsFlyer, Apptentive, Braze, CleverTap, etc.). Made-with: Cursor * Refactor UserAttributeListener forwarding in KitManagerImpl Add getConfiguration() and getName() to UserAttributeListener so callers can use the listener type without casting. Introduce userAttributeListeners() and iterate with variable name listener; keep activeKits() package-visible for tests. Made-with: Cursor * test(appsflyer): align onConsentStateUpdated calls with UserAttributeListener API Remove third argument and unused FilteredMParticleUser mock setup from unit tests. Made-with: Cursor * Fix DataplanBlockingUserTests onRemoveUserAttribute lambda arity UserAttributeListenerTestKit exposes (String?) -> Unit; a two-parameter lambda failed Kotlin type inference in compileDebugAndroidTestKotlin. Made-with: Cursor * Fix Braze kit tests for two-arg onConsentStateUpdated KitIntegration.UserAttributeListener now passes only old and new ConsentState. Drop the removed FilteredMParticleUser argument and unused mock from AppboyKitTests across braze-38 through braze-41. Made-with: Cursor * Fix GA and GA4 kit tests for two-arg onConsentStateUpdated Align GoogleAnalyticsFirebaseKitTest and GoogleAnalyticsFirebaseGA4KitTest with KitIntegration: drop the removed FilteredMParticleUser argument and unused mock from consent tests. Made-with: Cursor
1 parent d225842 commit 2b4cf31

33 files changed

Lines changed: 217 additions & 468 deletions

File tree

android-kit-base/src/androidTest/kotlin/com/mparticle/kits/DataplanBlockingUserTests.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ class DataplanBlockingUserTests : BaseKitOptionsTest() {
7373
),
7474
)
7575

76-
userAttributeListenerKitKit.onSetUserAttribute = { key, _, _ ->
76+
userAttributeListenerKitKit.onSetUserAttribute = { key, _ ->
7777
assertTrue(allowedAttributes.containsKey(key))
7878
assertFalse(blockedAttributes.containsKey(key))
7979
}
@@ -146,7 +146,7 @@ class DataplanBlockingUserTests : BaseKitOptionsTest() {
146146
count++
147147
}
148148
}
149-
userAttributeListenerKitKit.onRemoveUserAttribute = { key, _ ->
149+
userAttributeListenerKitKit.onRemoveUserAttribute = { key ->
150150
assertTrue(allowedAttributes.containsKey(key))
151151
assertFalse(blockedAttributes.containsKey(key))
152152
// make sure these are the attributes that are being removed
@@ -221,7 +221,7 @@ class DataplanBlockingUserTests : BaseKitOptionsTest() {
221221
count++
222222
}
223223
}
224-
userAttributeListenerKitKit.onSetUserAttributeList = { key, _, _ ->
224+
userAttributeListenerKitKit.onSetUserAttributeList = { key, _ ->
225225
assertTrue(allowedAttributes.containsKey(key))
226226
assertFalse(blockedAttributes.containsKey(key))
227227
count++

android-kit-base/src/androidTest/kotlin/com/mparticle/kits/testkits/ModifyIdentityListenerTestKit.kt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.mparticle.kits.testkits
22

33
import com.mparticle.MParticle
44
import com.mparticle.consent.ConsentState
5-
import com.mparticle.kits.FilteredMParticleUser
65
import com.mparticle.kits.KitIntegration.LogoutListener
76
import com.mparticle.kits.KitIntegration.ModifyIdentityListener
87
import com.mparticle.kits.KitIntegration.UserAttributeListener
@@ -30,7 +29,6 @@ open class ModifyIdentityListenerTestKit :
3029
override fun onSetUserAttributeList(
3130
attributeKey: String?,
3231
attributeValueList: List<String>?,
33-
user: FilteredMParticleUser?,
3432
) {
3533
setUserAttributeList?.invoke(attributeKey, attributeValueList)
3634
onAttributeReceived?.invoke(attributeKey, attributeValueList)
@@ -39,7 +37,6 @@ open class ModifyIdentityListenerTestKit :
3937
override fun onSetAllUserAttributes(
4038
userAttributes: Map<String, String>,
4139
userAttributeLists: Map<String, List<String>>,
42-
user: FilteredMParticleUser,
4340
) {
4441
setAllUserAttributes?.invoke(userAttributes, userAttributeLists)
4542
userAttributes.forEach { onAttributeReceived?.invoke(it.key, it.value) }
@@ -61,7 +58,6 @@ open class ModifyIdentityListenerTestKit :
6158

6259
override fun onRemoveUserAttribute(
6360
key: String,
64-
user: FilteredMParticleUser,
6561
) {
6662
removeUserAttributeListener?.invoke(key)
6763
onAttributeReceived?.invoke(key, null)
@@ -70,7 +66,6 @@ open class ModifyIdentityListenerTestKit :
7066
override fun onSetUserAttribute(
7167
key: String?,
7268
value: Any?,
73-
user: FilteredMParticleUser?,
7469
) {
7570
if (key == null || value == null || value !is String) {
7671
return
@@ -83,20 +78,17 @@ open class ModifyIdentityListenerTestKit :
8378
key: String?,
8479
incrementedBy: Number?,
8580
value: String?,
86-
user: FilteredMParticleUser?,
8781
) {
8882
}
8983

9084
override fun onSetUserTag(
9185
key: String?,
92-
user: FilteredMParticleUser?,
9386
) {
9487
}
9588

9689
override fun onConsentStateUpdated(
9790
oldState: ConsentState?,
9891
newState: ConsentState?,
99-
user: FilteredMParticleUser?,
10092
) {
10193
}
10294

android-kit-base/src/androidTest/kotlin/com/mparticle/kits/testkits/UserAttributeListenerTestKit.kt

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,95 +1,86 @@
11
package com.mparticle.kits.testkits
22

33
import com.mparticle.consent.ConsentState
4-
import com.mparticle.kits.FilteredMParticleUser
54
import com.mparticle.kits.KitIntegration
65

76
open class UserAttributeListenerTestKit :
87
ListenerTestKit(),
98
KitIntegration.UserAttributeListener {
10-
var onIncrementUserAttribute: ((key: String?, incrementedBy: Number, value: String?, user: FilteredMParticleUser?) -> Unit)? =
9+
var onIncrementUserAttribute: ((key: String?, incrementedBy: Number, value: String?) -> Unit)? =
1110
null
12-
var onRemoveUserAttribute: ((key: String?, user: FilteredMParticleUser?) -> Unit)? = null
13-
var onSetUserAttribute: ((key: String?, value: Any?, user: FilteredMParticleUser?) -> Unit)? =
11+
var onRemoveUserAttribute: ((key: String?) -> Unit)? = null
12+
var onSetUserAttribute: ((key: String?, value: Any?) -> Unit)? =
1413
null
15-
var onSetUserTag: ((key: String?, user: FilteredMParticleUser?) -> Unit)? = null
16-
var onSetUserAttributeList: ((attributeKey: String?, attributeValueList: List<String>?, user: FilteredMParticleUser?) -> Unit)? =
14+
var onSetUserTag: ((key: String?) -> Unit)? = null
15+
var onSetUserAttributeList: ((attributeKey: String?, attributeValueList: List<String>?) -> Unit)? =
1716
null
1817
var onSetAllUserAttributes: (
1918
(
2019
userAttributes: Map<String?, String?>?,
2120
userAttributeLists: Map<String?, List<String?>?>?,
22-
user: FilteredMParticleUser?,
2321
) -> Unit
2422
)? = null
2523
var supportsAttributeLists: (() -> Boolean)? = null
26-
var onConsentStateUpdated: ((oldState: ConsentState?, newState: ConsentState?, user: FilteredMParticleUser?) -> Unit)? =
24+
var onConsentStateUpdated: ((oldState: ConsentState?, newState: ConsentState?) -> Unit)? =
2725
null
2826

2927
override fun onConsentStateUpdated(
3028
oldState: ConsentState?,
3129
newState: ConsentState?,
32-
user: FilteredMParticleUser?,
3330
) {
34-
onConsentStateUpdated?.invoke(oldState, newState, user)
31+
onConsentStateUpdated?.invoke(oldState, newState)
3532
}
3633

3734
override fun onSetAllUserAttributes(
3835
userAttributes: Map<String?, String?>?,
3936
userAttributeLists: Map<String?, List<String>>?,
40-
user: FilteredMParticleUser?,
4137
) {
42-
onSetAllUserAttributes?.invoke(userAttributes, userAttributeLists, user)
38+
onSetAllUserAttributes?.invoke(userAttributes, userAttributeLists)
4339
userAttributes?.forEach { onAttributeReceived?.invoke(it.key, it.value) }
4440
}
4541

4642
override fun onSetUserAttribute(
4743
key: String?,
4844
value: Any?,
49-
user: FilteredMParticleUser?,
5045
) {
51-
onSetUserAttribute?.invoke(key, value, user)
46+
onSetUserAttribute?.invoke(key, value)
5247
onAttributeReceived?.invoke(key, value)
53-
onUserReceived?.invoke(user)
48+
onUserReceived?.invoke(null)
5449
}
5550

5651
override fun onSetUserTag(
5752
key: String?,
58-
user: FilteredMParticleUser?,
5953
) {
60-
onSetUserTag?.invoke(key, user)
54+
onSetUserTag?.invoke(key)
6155
onAttributeReceived?.invoke(key, null)
62-
onUserReceived?.invoke(user)
56+
onUserReceived?.invoke(null)
6357
}
6458

6559
override fun onIncrementUserAttribute(
6660
key: String?,
6761
incrementedBy: Number,
6862
value: String?,
69-
user: FilteredMParticleUser?,
7063
) {
71-
onIncrementUserAttribute?.invoke(key, incrementedBy, value, user)
64+
onIncrementUserAttribute?.invoke(key, incrementedBy, value)
7265
onAttributeReceived?.invoke(key, value)
73-
onUserReceived?.invoke(user)
66+
onUserReceived?.invoke(null)
7467
}
7568

7669
override fun onSetUserAttributeList(
7770
attributeKey: String?,
7871
attributeValueList: List<String>?,
79-
user: FilteredMParticleUser?,
8072
) {
81-
onSetUserAttributeList?.invoke(attributeKey, attributeValueList, user)
73+
onSetUserAttributeList?.invoke(attributeKey, attributeValueList)
8274
onAttributeReceived?.invoke(attributeKey, attributeValueList)
83-
onUserReceived?.invoke(user)
75+
onUserReceived?.invoke(null)
8476
}
8577

8678
override fun onRemoveUserAttribute(
8779
key: String?,
88-
user: FilteredMParticleUser?,
8980
) {
90-
onRemoveUserAttribute?.invoke(key, user)
81+
onRemoveUserAttribute?.invoke(key)
9182
onAttributeReceived?.invoke(key, null)
92-
onUserReceived?.invoke(user)
83+
onUserReceived?.invoke(null)
9384
}
9485

9586
override fun supportsAttributeLists() = supportsAttributeLists?.invoke() ?: true

android-kit-base/src/main/java/com/mparticle/kits/KitIntegration.java

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -539,50 +539,48 @@ public interface UserAttributeListener {
539539
/**
540540
* Called when a user attribute is removed for the current user.
541541
*
542-
* @param key attribute key
543-
* @param user filtered user context for this kit
542+
* @param key attribute key
544543
*/
545-
void onRemoveUserAttribute(String key, FilteredMParticleUser user);
544+
void onRemoveUserAttribute(String key);
546545

547546
/**
548547
* Called when a scalar user attribute is set for the current user.
549548
*
550549
* @param key attribute key
551550
* @param value attribute value (may be non-String for some call paths)
552-
* @param user filtered user context for this kit
553551
*/
554-
void onSetUserAttribute(String key, Object value, FilteredMParticleUser user);
552+
void onSetUserAttribute(String key, Object value);
555553

556554
/**
557555
* Called when a list-valued user attribute is set and {@link #supportsAttributeLists()} returns true.
558556
*
559557
* @param attributeKey attribute key (may be null)
560558
* @param attributeValueList attribute values (may be null)
561-
* @param user filtered user context for this kit (may be null)
562559
*/
563560
void onSetUserAttributeList(
564561
@Nullable String attributeKey,
565-
@Nullable List<String> attributeValueList,
566-
@Nullable FilteredMParticleUser user);
562+
@Nullable List<String> attributeValueList);
567563

568564
/**
569565
* Called when the full set of user attributes is synchronized for the current user.
570566
*
571567
* @param userAttributes scalar user attributes
572568
* @param userAttributeLists list-valued user attributes when {@link #supportsAttributeLists()} is true;
573569
* otherwise list values may be merged into scalars by the framework
574-
* @param user filtered user context for this kit
575570
*/
576571
void onSetAllUserAttributes(
577572
Map<String, String> userAttributes,
578-
Map<String, List<String>> userAttributeLists,
579-
FilteredMParticleUser user);
573+
Map<String, List<String>> userAttributeLists);
580574

581-
void onIncrementUserAttribute(String key, Number incrementedBy, String value, FilteredMParticleUser user);
575+
void onIncrementUserAttribute(String key, Number incrementedBy, String value);
582576

583-
void onSetUserTag(String key, FilteredMParticleUser user);
577+
void onSetUserTag(String key);
584578

585-
void onConsentStateUpdated(ConsentState oldState, ConsentState newState, FilteredMParticleUser user);
579+
void onConsentStateUpdated(ConsentState oldState, ConsentState newState);
580+
581+
KitConfiguration getConfiguration();
582+
583+
String getName();
586584
}
587585

588586
public interface BatchListener {

0 commit comments

Comments
 (0)