diff --git a/android-kit-base/src/androidTest/kotlin/com/mparticle/kits/testkits/AttributeListenerTestKit.kt b/android-kit-base/src/androidTest/kotlin/com/mparticle/kits/testkits/AttributeListenerTestKit.kt index e3c00dacb..8d1ca5573 100644 --- a/android-kit-base/src/androidTest/kotlin/com/mparticle/kits/testkits/AttributeListenerTestKit.kt +++ b/android-kit-base/src/androidTest/kotlin/com/mparticle/kits/testkits/AttributeListenerTestKit.kt @@ -33,9 +33,10 @@ open class AttributeListenerTestKit : onAttributeReceived?.invoke(attributeKey, attributeValueList) } - override fun setAllUserAttributes( + override fun onSetAllUserAttributes( userAttributes: Map, - userAttributeLists: Map>, + userAttributeLists: Map>, + user: FilteredMParticleUser, ) { setAllUserAttributes?.invoke(userAttributes, userAttributeLists) userAttributes.forEach { onAttributeReceived?.invoke(it.key, it.value) } diff --git a/android-kit-base/src/main/java/com/mparticle/kits/KitIntegration.java b/android-kit-base/src/main/java/com/mparticle/kits/KitIntegration.java index 549e25967..ccf78f24e 100644 --- a/android-kit-base/src/main/java/com/mparticle/kits/KitIntegration.java +++ b/android-kit-base/src/main/java/com/mparticle/kits/KitIntegration.java @@ -408,12 +408,23 @@ void onSetUserAttributeList( @Nullable String attributeKey, @Nullable List attributeValueList, @Nullable FilteredMParticleUser user); + + /** + * Called when the full set of user attributes is synchronized for the current user. + * + * @param userAttributes scalar user attributes + * @param userAttributeLists list-valued user attributes when {@link #supportsAttributeLists()} is true; + * otherwise list values may be merged into scalars by the framework + * @param user filtered user context for this kit + */ + void onSetAllUserAttributes( + Map userAttributes, + Map> userAttributeLists, + FilteredMParticleUser user); } public interface AttributeListener extends BaseAttributeListener { - void setAllUserAttributes(Map userAttributes, Map> userAttributeLists); - void setUserIdentity(MParticle.IdentityType identityType, String identity); void removeUserIdentity(MParticle.IdentityType identityType); @@ -575,9 +586,8 @@ public interface UserAttributeListener extends BaseAttributeListener { void onSetUserTag(String key, FilteredMParticleUser user); - void onSetAllUserAttributes(Map userAttributes, Map> userAttributeLists, FilteredMParticleUser user); - void onConsentStateUpdated(ConsentState oldState, ConsentState newState, FilteredMParticleUser user); + } public interface BatchListener { diff --git a/android-kit-base/src/main/java/com/mparticle/kits/KitManagerImpl.java b/android-kit-base/src/main/java/com/mparticle/kits/KitManagerImpl.java index 970d1d51a..a37cd0a28 100644 --- a/android-kit-base/src/main/java/com/mparticle/kits/KitManagerImpl.java +++ b/android-kit-base/src/main/java/com/mparticle/kits/KitManagerImpl.java @@ -599,34 +599,22 @@ public void onUserAttributesReceived(Map userAttributes, Map filteredAttributeSingles = (Map) KitConfiguration.filterAttributes(provider.getConfiguration().getUserAttributeFilters(), userAttributes); Map> filteredAttributeLists = (Map>) KitConfiguration.filterAttributes(provider.getConfiguration().getUserAttributeFilters(), userAttributeLists); - boolean supportsAttributeLists = ((KitIntegration.BaseAttributeListener) provider).supportsAttributeLists(); - if (provider instanceof KitIntegration.AttributeListener) { - if (supportsAttributeLists) { - ((KitIntegration.AttributeListener) provider).setAllUserAttributes(filteredAttributeSingles, filteredAttributeLists); - } else { - Map singlesCopy = new HashMap<>(filteredAttributeSingles); - for (Map.Entry> entry : filteredAttributeLists.entrySet()) { - singlesCopy.put(entry.getKey(), KitUtils.join(entry.getValue())); - } - ((KitIntegration.AttributeListener) provider).setAllUserAttributes(singlesCopy, new HashMap>()); - } - } - if (provider instanceof KitIntegration.UserAttributeListener) { - if (supportsAttributeLists) { - ((KitIntegration.UserAttributeListener) provider).onSetAllUserAttributes(filteredAttributeSingles, filteredAttributeLists, FilteredMParticleUser.getInstance(mpid, provider)); - } else { - Map singlesCopy = new HashMap<>(filteredAttributeSingles); - for (Map.Entry> entry : filteredAttributeLists.entrySet()) { - singlesCopy.put(entry.getKey(), KitUtils.join(entry.getValue())); - } - ((KitIntegration.UserAttributeListener) provider).onSetAllUserAttributes(singlesCopy, new HashMap>(), FilteredMParticleUser.getInstance(mpid, provider)); + boolean supportsAttributeLists = listener.supportsAttributeLists(); + FilteredMParticleUser filteredUser = FilteredMParticleUser.getInstance(mpid, provider); + if (supportsAttributeLists) { + listener.onSetAllUserAttributes(filteredAttributeSingles, filteredAttributeLists, filteredUser); + } else { + Map singlesCopy = new HashMap<>(filteredAttributeSingles); + for (Map.Entry> entry : filteredAttributeLists.entrySet()) { + singlesCopy.put(entry.getKey(), KitUtils.join(entry.getValue())); } + listener.onSetAllUserAttributes(singlesCopy, new HashMap>(), filteredUser); } } } catch (Exception e) { diff --git a/android-kit-base/src/test/kotlin/com/mparticle/kits/KitManagerImplTest.kt b/android-kit-base/src/test/kotlin/com/mparticle/kits/KitManagerImplTest.kt index 7b4a10e3e..9ea28affe 100644 --- a/android-kit-base/src/test/kotlin/com/mparticle/kits/KitManagerImplTest.kt +++ b/android-kit-base/src/test/kotlin/com/mparticle/kits/KitManagerImplTest.kt @@ -519,15 +519,15 @@ class KitManagerImplTest { attributeList.add("3") userAttributeLists["test 3"] = attributeList manager.onUserAttributesReceived(userAttributeSingles, userAttributeLists, 1L) - verify(integration as AttributeListener, Mockito.times(1)) - .setAllUserAttributes(userAttributeSingles, userAttributeLists) + verify(integration as BaseAttributeListener, Mockito.times(1)) + .onSetAllUserAttributes(eq(userAttributeSingles), eq(userAttributeLists), any()) val userAttributesCombined: MutableMap = HashMap() userAttributesCombined["test"] = "whatever" userAttributesCombined["test 2"] = "whatever 2" userAttributesCombined["test 3"] = "1,2,3" val clearedOutList: Map> = HashMap() - verify(integration2 as AttributeListener, Mockito.times(1)) - .setAllUserAttributes(userAttributesCombined, clearedOutList) + verify(integration2 as BaseAttributeListener, Mockito.times(1)) + .onSetAllUserAttributes(eq(userAttributesCombined), eq(clearedOutList), any()) } @Test diff --git a/kits/adobe/adobe-5/src/main/kotlin/com/mparticle/kits/AdobeKitBase.kt b/kits/adobe/adobe-5/src/main/kotlin/com/mparticle/kits/AdobeKitBase.kt index 3196faff0..fe0abda91 100644 --- a/kits/adobe/adobe-5/src/main/kotlin/com/mparticle/kits/AdobeKitBase.kt +++ b/kits/adobe/adobe-5/src/main/kotlin/com/mparticle/kits/AdobeKitBase.kt @@ -58,9 +58,10 @@ abstract class AdobeKitBase : override fun supportsAttributeLists(): Boolean = false - override fun setAllUserAttributes( - map: Map, - map1: Map>, + override fun onSetAllUserAttributes( + userAttributes: Map, + userAttributeLists: Map>, + user: FilteredMParticleUser, ) { syncIds() } diff --git a/kits/adobemedia/adobemedia-5/src/main/kotlin/com/mparticle/kits/AdobeKit.kt b/kits/adobemedia/adobemedia-5/src/main/kotlin/com/mparticle/kits/AdobeKit.kt index 758689414..6fd47dd2d 100644 --- a/kits/adobemedia/adobemedia-5/src/main/kotlin/com/mparticle/kits/AdobeKit.kt +++ b/kits/adobemedia/adobemedia-5/src/main/kotlin/com/mparticle/kits/AdobeKit.kt @@ -95,9 +95,10 @@ open class AdobeKit : override fun supportsAttributeLists(): Boolean = false - override fun setAllUserAttributes( - map: Map, - map1: Map>, + override fun onSetAllUserAttributes( + userAttributes: Map, + userAttributeLists: Map>, + user: FilteredMParticleUser, ) { syncIds() } diff --git a/kits/appsflyer/appsflyer-6/src/main/kotlin/com/mparticle/kits/AppsFlyerKit.kt b/kits/appsflyer/appsflyer-6/src/main/kotlin/com/mparticle/kits/AppsFlyerKit.kt index 9bdf709ef..8d2356b9c 100644 --- a/kits/appsflyer/appsflyer-6/src/main/kotlin/com/mparticle/kits/AppsFlyerKit.kt +++ b/kits/appsflyer/appsflyer-6/src/main/kotlin/com/mparticle/kits/AppsFlyerKit.kt @@ -289,17 +289,11 @@ class AppsFlyerKit : userAttributeLists: MutableMap>?, user: FilteredMParticleUser?, ) { + // No-op: this kit does not implement this feature. } override fun supportsAttributeLists(): Boolean = true - override fun setAllUserAttributes( - map: Map, - map1: Map>, - ) { - // No-op: this kit does not implement this feature. - } - override fun removeUserIdentity(identityType: MParticle.IdentityType) { with(instance) { if (MParticle.IdentityType.CustomerId == identityType) { diff --git a/kits/apptimize/apptimize-3/src/main/kotlin/com/mparticle/kits/ApptimizeKit.kt b/kits/apptimize/apptimize-3/src/main/kotlin/com/mparticle/kits/ApptimizeKit.kt index 70d42766c..2cf24e0e7 100644 --- a/kits/apptimize/apptimize-3/src/main/kotlin/com/mparticle/kits/ApptimizeKit.kt +++ b/kits/apptimize/apptimize-3/src/main/kotlin/com/mparticle/kits/ApptimizeKit.kt @@ -132,13 +132,14 @@ class ApptimizeKit : override fun supportsAttributeLists(): Boolean = false /** - * @param attributeLists is ignored by the Apptimize kit. + * [userAttributeLists] is ignored by the Apptimize kit. */ - override fun setAllUserAttributes( - attributes: Map, - attributeLists: Map>, + override fun onSetAllUserAttributes( + userAttributes: Map, + userAttributeLists: Map>, + user: FilteredMParticleUser, ) { - for ((key, value) in attributes) { + for ((key, value) in userAttributes) { Apptimize.setUserAttribute(key, value) } } diff --git a/kits/branch/branch-5/src/main/kotlin/com/mparticle/kits/BranchMetricsKit.kt b/kits/branch/branch-5/src/main/kotlin/com/mparticle/kits/BranchMetricsKit.kt index bdd2970b3..b420ec33b 100644 --- a/kits/branch/branch-5/src/main/kotlin/com/mparticle/kits/BranchMetricsKit.kt +++ b/kits/branch/branch-5/src/main/kotlin/com/mparticle/kits/BranchMetricsKit.kt @@ -184,10 +184,12 @@ class BranchMetricsKit : override fun supportsAttributeLists(): Boolean = true - override fun setAllUserAttributes( - map: Map, - map1: Map>, - ) {} + override fun onSetAllUserAttributes( + userAttributes: Map, + userAttributeLists: Map>, + user: FilteredMParticleUser, + ) { + } override fun onRemoveUserAttribute( key: String, diff --git a/kits/braze/braze-38/src/main/kotlin/com/mparticle/kits/AppboyKit.kt b/kits/braze/braze-38/src/main/kotlin/com/mparticle/kits/AppboyKit.kt index e725d8754..5aa06e6ec 100644 --- a/kits/braze/braze-38/src/main/kotlin/com/mparticle/kits/AppboyKit.kt +++ b/kits/braze/braze-38/src/main/kotlin/com/mparticle/kits/AppboyKit.kt @@ -535,6 +535,31 @@ open class AppboyKit : userAttributeLists: MutableMap>?, user: FilteredMParticleUser?, ) { + val attributes = userAttributes ?: emptyMap() + val attributeLists = userAttributeLists ?: emptyMap() + if (!kitPreferences.getBoolean(PREF_KEY_HAS_SYNCED_ATTRIBUTES, false)) { + for ((key, value) in attributes) { + applyScalarUserAttribute(key, value) + } + for ((key, value) in attributeLists) { + Braze + .getInstance(context) + .getCurrentUser( + object : IValueCallback { + override fun onSuccess(brazeUser: BrazeUser) { + val array = value.toTypedArray() + brazeUser.setCustomAttributeArray(key, array) + queueDataFlush() + } + + override fun onError() { + Logger.warning("unable to set key: " + key + " with User Attribute List: " + value) + } + }, + ) + } + kitPreferences.edit().putBoolean(PREF_KEY_HAS_SYNCED_ATTRIBUTES, true).apply() + } } override fun supportsAttributeLists(): Boolean = true @@ -672,38 +697,6 @@ open class AppboyKit : dataFlushRunnable?.let { dataFlushHandler.postDelayed(it, FLUSH_DELAY.toLong()) } } - /** - * This is called when the Kit is added to the mParticle SDK, typically on app-startup. - */ - override fun setAllUserAttributes( - attributes: Map, - attributeLists: Map>, - ) { - if (!kitPreferences.getBoolean(PREF_KEY_HAS_SYNCED_ATTRIBUTES, false)) { - for ((key, value) in attributes) { - applyScalarUserAttribute(key, value) - } - for ((key, value) in attributeLists) { - Braze - .getInstance(context) - .getCurrentUser( - object : IValueCallback { - override fun onSuccess(brazeUser: BrazeUser) { - val array = value.toTypedArray() - brazeUser.setCustomAttributeArray(key, array) - queueDataFlush() - } - - override fun onError() { - Logger.warning("unable to set key: " + key + " with User Attribute List: " + value) - } - }, - ) - } - kitPreferences.edit().putBoolean(PREF_KEY_HAS_SYNCED_ATTRIBUTES, true).apply() - } - } - override fun setUserIdentity( identityType: IdentityType, identity: String, diff --git a/kits/braze/braze-39/src/main/kotlin/com/mparticle/kits/AppboyKit.kt b/kits/braze/braze-39/src/main/kotlin/com/mparticle/kits/AppboyKit.kt index e725d8754..5aa06e6ec 100644 --- a/kits/braze/braze-39/src/main/kotlin/com/mparticle/kits/AppboyKit.kt +++ b/kits/braze/braze-39/src/main/kotlin/com/mparticle/kits/AppboyKit.kt @@ -535,6 +535,31 @@ open class AppboyKit : userAttributeLists: MutableMap>?, user: FilteredMParticleUser?, ) { + val attributes = userAttributes ?: emptyMap() + val attributeLists = userAttributeLists ?: emptyMap() + if (!kitPreferences.getBoolean(PREF_KEY_HAS_SYNCED_ATTRIBUTES, false)) { + for ((key, value) in attributes) { + applyScalarUserAttribute(key, value) + } + for ((key, value) in attributeLists) { + Braze + .getInstance(context) + .getCurrentUser( + object : IValueCallback { + override fun onSuccess(brazeUser: BrazeUser) { + val array = value.toTypedArray() + brazeUser.setCustomAttributeArray(key, array) + queueDataFlush() + } + + override fun onError() { + Logger.warning("unable to set key: " + key + " with User Attribute List: " + value) + } + }, + ) + } + kitPreferences.edit().putBoolean(PREF_KEY_HAS_SYNCED_ATTRIBUTES, true).apply() + } } override fun supportsAttributeLists(): Boolean = true @@ -672,38 +697,6 @@ open class AppboyKit : dataFlushRunnable?.let { dataFlushHandler.postDelayed(it, FLUSH_DELAY.toLong()) } } - /** - * This is called when the Kit is added to the mParticle SDK, typically on app-startup. - */ - override fun setAllUserAttributes( - attributes: Map, - attributeLists: Map>, - ) { - if (!kitPreferences.getBoolean(PREF_KEY_HAS_SYNCED_ATTRIBUTES, false)) { - for ((key, value) in attributes) { - applyScalarUserAttribute(key, value) - } - for ((key, value) in attributeLists) { - Braze - .getInstance(context) - .getCurrentUser( - object : IValueCallback { - override fun onSuccess(brazeUser: BrazeUser) { - val array = value.toTypedArray() - brazeUser.setCustomAttributeArray(key, array) - queueDataFlush() - } - - override fun onError() { - Logger.warning("unable to set key: " + key + " with User Attribute List: " + value) - } - }, - ) - } - kitPreferences.edit().putBoolean(PREF_KEY_HAS_SYNCED_ATTRIBUTES, true).apply() - } - } - override fun setUserIdentity( identityType: IdentityType, identity: String, diff --git a/kits/braze/braze-40/src/main/kotlin/com/mparticle/kits/AppboyKit.kt b/kits/braze/braze-40/src/main/kotlin/com/mparticle/kits/AppboyKit.kt index e725d8754..5aa06e6ec 100644 --- a/kits/braze/braze-40/src/main/kotlin/com/mparticle/kits/AppboyKit.kt +++ b/kits/braze/braze-40/src/main/kotlin/com/mparticle/kits/AppboyKit.kt @@ -535,6 +535,31 @@ open class AppboyKit : userAttributeLists: MutableMap>?, user: FilteredMParticleUser?, ) { + val attributes = userAttributes ?: emptyMap() + val attributeLists = userAttributeLists ?: emptyMap() + if (!kitPreferences.getBoolean(PREF_KEY_HAS_SYNCED_ATTRIBUTES, false)) { + for ((key, value) in attributes) { + applyScalarUserAttribute(key, value) + } + for ((key, value) in attributeLists) { + Braze + .getInstance(context) + .getCurrentUser( + object : IValueCallback { + override fun onSuccess(brazeUser: BrazeUser) { + val array = value.toTypedArray() + brazeUser.setCustomAttributeArray(key, array) + queueDataFlush() + } + + override fun onError() { + Logger.warning("unable to set key: " + key + " with User Attribute List: " + value) + } + }, + ) + } + kitPreferences.edit().putBoolean(PREF_KEY_HAS_SYNCED_ATTRIBUTES, true).apply() + } } override fun supportsAttributeLists(): Boolean = true @@ -672,38 +697,6 @@ open class AppboyKit : dataFlushRunnable?.let { dataFlushHandler.postDelayed(it, FLUSH_DELAY.toLong()) } } - /** - * This is called when the Kit is added to the mParticle SDK, typically on app-startup. - */ - override fun setAllUserAttributes( - attributes: Map, - attributeLists: Map>, - ) { - if (!kitPreferences.getBoolean(PREF_KEY_HAS_SYNCED_ATTRIBUTES, false)) { - for ((key, value) in attributes) { - applyScalarUserAttribute(key, value) - } - for ((key, value) in attributeLists) { - Braze - .getInstance(context) - .getCurrentUser( - object : IValueCallback { - override fun onSuccess(brazeUser: BrazeUser) { - val array = value.toTypedArray() - brazeUser.setCustomAttributeArray(key, array) - queueDataFlush() - } - - override fun onError() { - Logger.warning("unable to set key: " + key + " with User Attribute List: " + value) - } - }, - ) - } - kitPreferences.edit().putBoolean(PREF_KEY_HAS_SYNCED_ATTRIBUTES, true).apply() - } - } - override fun setUserIdentity( identityType: IdentityType, identity: String, diff --git a/kits/braze/braze-41/src/main/kotlin/com/mparticle/kits/AppboyKit.kt b/kits/braze/braze-41/src/main/kotlin/com/mparticle/kits/AppboyKit.kt index e725d8754..5aa06e6ec 100644 --- a/kits/braze/braze-41/src/main/kotlin/com/mparticle/kits/AppboyKit.kt +++ b/kits/braze/braze-41/src/main/kotlin/com/mparticle/kits/AppboyKit.kt @@ -535,6 +535,31 @@ open class AppboyKit : userAttributeLists: MutableMap>?, user: FilteredMParticleUser?, ) { + val attributes = userAttributes ?: emptyMap() + val attributeLists = userAttributeLists ?: emptyMap() + if (!kitPreferences.getBoolean(PREF_KEY_HAS_SYNCED_ATTRIBUTES, false)) { + for ((key, value) in attributes) { + applyScalarUserAttribute(key, value) + } + for ((key, value) in attributeLists) { + Braze + .getInstance(context) + .getCurrentUser( + object : IValueCallback { + override fun onSuccess(brazeUser: BrazeUser) { + val array = value.toTypedArray() + brazeUser.setCustomAttributeArray(key, array) + queueDataFlush() + } + + override fun onError() { + Logger.warning("unable to set key: " + key + " with User Attribute List: " + value) + } + }, + ) + } + kitPreferences.edit().putBoolean(PREF_KEY_HAS_SYNCED_ATTRIBUTES, true).apply() + } } override fun supportsAttributeLists(): Boolean = true @@ -672,38 +697,6 @@ open class AppboyKit : dataFlushRunnable?.let { dataFlushHandler.postDelayed(it, FLUSH_DELAY.toLong()) } } - /** - * This is called when the Kit is added to the mParticle SDK, typically on app-startup. - */ - override fun setAllUserAttributes( - attributes: Map, - attributeLists: Map>, - ) { - if (!kitPreferences.getBoolean(PREF_KEY_HAS_SYNCED_ATTRIBUTES, false)) { - for ((key, value) in attributes) { - applyScalarUserAttribute(key, value) - } - for ((key, value) in attributeLists) { - Braze - .getInstance(context) - .getCurrentUser( - object : IValueCallback { - override fun onSuccess(brazeUser: BrazeUser) { - val array = value.toTypedArray() - brazeUser.setCustomAttributeArray(key, array) - queueDataFlush() - } - - override fun onError() { - Logger.warning("unable to set key: " + key + " with User Attribute List: " + value) - } - }, - ) - } - kitPreferences.edit().putBoolean(PREF_KEY_HAS_SYNCED_ATTRIBUTES, true).apply() - } - } - override fun setUserIdentity( identityType: IdentityType, identity: String, diff --git a/kits/comscore/comscore-6/src/main/kotlin/com/mparticle/kits/ComscoreKit.kt b/kits/comscore/comscore-6/src/main/kotlin/com/mparticle/kits/ComscoreKit.kt index 704036f30..23ee806a5 100644 --- a/kits/comscore/comscore-6/src/main/kotlin/com/mparticle/kits/ComscoreKit.kt +++ b/kits/comscore/comscore-6/src/main/kotlin/com/mparticle/kits/ComscoreKit.kt @@ -104,12 +104,13 @@ class ComscoreKit : override fun supportsAttributeLists(): Boolean = !isEnterprise - override fun setAllUserAttributes( - attributes: Map, - attributeLists: Map>, + override fun onSetAllUserAttributes( + userAttributes: Map, + userAttributeLists: Map>, + user: FilteredMParticleUser, ) { if (isEnterprise) { - for ((key, value) in attributes) { + for ((key, value) in userAttributes) { applyEnterpriseScalarUserAttribute(key, value) } } diff --git a/kits/kochava/kochava-5/src/main/kotlin/com/mparticle/kits/KochavaKit.kt b/kits/kochava/kochava-5/src/main/kotlin/com/mparticle/kits/KochavaKit.kt index 5a10c5279..fcbf5141d 100644 --- a/kits/kochava/kochava-5/src/main/kotlin/com/mparticle/kits/KochavaKit.kt +++ b/kits/kochava/kochava-5/src/main/kotlin/com/mparticle/kits/KochavaKit.kt @@ -92,10 +92,12 @@ class KochavaKit : override fun supportsAttributeLists(): Boolean = true - override fun setAllUserAttributes( - map: Map, - map1: Map>, - ) {} + override fun onSetAllUserAttributes( + userAttributes: Map, + userAttributeLists: Map>, + user: FilteredMParticleUser, + ) { + } override fun onRemoveUserAttribute( key: String, diff --git a/kits/localytics/localytics-6/src/main/kotlin/com/mparticle/kits/LocalyticsKit.kt b/kits/localytics/localytics-6/src/main/kotlin/com/mparticle/kits/LocalyticsKit.kt index 9ba9bb001..130386da6 100644 --- a/kits/localytics/localytics-6/src/main/kotlin/com/mparticle/kits/LocalyticsKit.kt +++ b/kits/localytics/localytics-6/src/main/kotlin/com/mparticle/kits/LocalyticsKit.kt @@ -161,14 +161,15 @@ class LocalyticsKit : override fun supportsAttributeLists(): Boolean = true - override fun setAllUserAttributes( - attributes: Map, - attributeLists: Map>, + override fun onSetAllUserAttributes( + userAttributes: Map, + userAttributeLists: Map>, + user: FilteredMParticleUser, ) { - for ((key, value) in attributes) { + for ((key, value) in userAttributes) { applyScalarUserAttribute(key, value) } - for ((key, value) in attributeLists) { + for ((key, value) in userAttributeLists) { Localytics.setProfileAttribute(key, value.toTypedArray()) } } diff --git a/kits/singular/singular-12/src/main/kotlin/com/mparticle/kits/SingularKit.kt b/kits/singular/singular-12/src/main/kotlin/com/mparticle/kits/SingularKit.kt index 8e945b4ba..ab6df79f8 100644 --- a/kits/singular/singular-12/src/main/kotlin/com/mparticle/kits/SingularKit.kt +++ b/kits/singular/singular-12/src/main/kotlin/com/mparticle/kits/SingularKit.kt @@ -394,9 +394,9 @@ open class SingularKit : } override fun onSetAllUserAttributes( - map: Map, - map1: Map>, - filteredMParticleUser: FilteredMParticleUser, + userAttributes: Map, + userAttributeLists: Map>, + user: FilteredMParticleUser, ) { } @@ -412,11 +412,6 @@ open class SingularKit : }, forceInitSingular = false, "onConsentStateUpdated") } - override fun setAllUserAttributes( - map: Map, - map1: Map>, - ) {} - override fun setUserIdentity( identityType: IdentityType, s: String, diff --git a/kits/urbanairship/urbanairship-20/src/main/kotlin/com/mparticle/kits/UrbanAirshipKit.kt b/kits/urbanairship/urbanairship-20/src/main/kotlin/com/mparticle/kits/UrbanAirshipKit.kt index aa2dc09ef..28b1cc7c8 100644 --- a/kits/urbanairship/urbanairship-20/src/main/kotlin/com/mparticle/kits/UrbanAirshipKit.kt +++ b/kits/urbanairship/urbanairship-20/src/main/kotlin/com/mparticle/kits/UrbanAirshipKit.kt @@ -247,15 +247,16 @@ class UrbanAirshipKit : override fun supportsAttributeLists(): Boolean = false - override fun setAllUserAttributes( - stringAttributes: Map, - listAttributes: Map>, + override fun onSetAllUserAttributes( + userAttributes: Map, + userAttributeLists: Map>, + user: FilteredMParticleUser, ) { if (configuration?.enableTags == true) { val editor = Airship.channel .editTags() - for ((key, value) in stringAttributes) { + for ((key, value) in userAttributes) { if (KitUtils.isEmpty(value)) { editor.addTag(KitUtils.sanitizeAttributeKey(key)) } else if (configuration?.includeUserAttributes == true) {