Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ class DataplanBlockingUserTests : BaseKitOptionsTest() {
),
)

userAttributeListenerKitKit.onSetUserAttribute = { key, _, _ ->
userAttributeListenerKitKit.onSetUserAttribute = { key, _ ->
assertTrue(allowedAttributes.containsKey(key))
assertFalse(blockedAttributes.containsKey(key))
}
Expand Down Expand Up @@ -146,7 +146,7 @@ class DataplanBlockingUserTests : BaseKitOptionsTest() {
count++
}
}
userAttributeListenerKitKit.onRemoveUserAttribute = { key, _ ->
userAttributeListenerKitKit.onRemoveUserAttribute = { key ->
assertTrue(allowedAttributes.containsKey(key))
assertFalse(blockedAttributes.containsKey(key))
// make sure these are the attributes that are being removed
Expand Down Expand Up @@ -221,7 +221,7 @@ class DataplanBlockingUserTests : BaseKitOptionsTest() {
count++
}
}
userAttributeListenerKitKit.onSetUserAttributeList = { key, _, _ ->
userAttributeListenerKitKit.onSetUserAttributeList = { key, _ ->
assertTrue(allowedAttributes.containsKey(key))
assertFalse(blockedAttributes.containsKey(key))
count++
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package com.mparticle.kits.testkits

import com.mparticle.MParticle
import com.mparticle.consent.ConsentState
import com.mparticle.kits.FilteredMParticleUser
import com.mparticle.kits.KitIntegration.LogoutListener
import com.mparticle.kits.KitIntegration.ModifyIdentityListener
import com.mparticle.kits.KitIntegration.UserAttributeListener
Expand Down Expand Up @@ -30,7 +29,6 @@ open class ModifyIdentityListenerTestKit :
override fun onSetUserAttributeList(
attributeKey: String?,
attributeValueList: List<String>?,
user: FilteredMParticleUser?,
) {
setUserAttributeList?.invoke(attributeKey, attributeValueList)
onAttributeReceived?.invoke(attributeKey, attributeValueList)
Expand All @@ -39,7 +37,6 @@ open class ModifyIdentityListenerTestKit :
override fun onSetAllUserAttributes(
userAttributes: Map<String, String>,
userAttributeLists: Map<String, List<String>>,
user: FilteredMParticleUser,
) {
setAllUserAttributes?.invoke(userAttributes, userAttributeLists)
userAttributes.forEach { onAttributeReceived?.invoke(it.key, it.value) }
Expand All @@ -61,7 +58,6 @@ open class ModifyIdentityListenerTestKit :

override fun onRemoveUserAttribute(
key: String,
user: FilteredMParticleUser,
) {
removeUserAttributeListener?.invoke(key)
onAttributeReceived?.invoke(key, null)
Expand All @@ -70,7 +66,6 @@ open class ModifyIdentityListenerTestKit :
override fun onSetUserAttribute(
key: String?,
value: Any?,
user: FilteredMParticleUser?,
) {
if (key == null || value == null || value !is String) {
return
Expand All @@ -83,20 +78,17 @@ open class ModifyIdentityListenerTestKit :
key: String?,
incrementedBy: Number?,
value: String?,
user: FilteredMParticleUser?,
) {
}

override fun onSetUserTag(
key: String?,
user: FilteredMParticleUser?,
) {
}

override fun onConsentStateUpdated(
oldState: ConsentState?,
newState: ConsentState?,
user: FilteredMParticleUser?,
) {
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,95 +1,86 @@
package com.mparticle.kits.testkits

import com.mparticle.consent.ConsentState
import com.mparticle.kits.FilteredMParticleUser
import com.mparticle.kits.KitIntegration

open class UserAttributeListenerTestKit :
ListenerTestKit(),
KitIntegration.UserAttributeListener {
var onIncrementUserAttribute: ((key: String?, incrementedBy: Number, value: String?, user: FilteredMParticleUser?) -> Unit)? =
var onIncrementUserAttribute: ((key: String?, incrementedBy: Number, value: String?) -> Unit)? =
null
var onRemoveUserAttribute: ((key: String?, user: FilteredMParticleUser?) -> Unit)? = null
var onSetUserAttribute: ((key: String?, value: Any?, user: FilteredMParticleUser?) -> Unit)? =
var onRemoveUserAttribute: ((key: String?) -> Unit)? = null
var onSetUserAttribute: ((key: String?, value: Any?) -> Unit)? =
null
var onSetUserTag: ((key: String?, user: FilteredMParticleUser?) -> Unit)? = null
var onSetUserAttributeList: ((attributeKey: String?, attributeValueList: List<String>?, user: FilteredMParticleUser?) -> Unit)? =
var onSetUserTag: ((key: String?) -> Unit)? = null
var onSetUserAttributeList: ((attributeKey: String?, attributeValueList: List<String>?) -> Unit)? =
null
var onSetAllUserAttributes: (
(
userAttributes: Map<String?, String?>?,
userAttributeLists: Map<String?, List<String?>?>?,
user: FilteredMParticleUser?,
) -> Unit
)? = null
var supportsAttributeLists: (() -> Boolean)? = null
var onConsentStateUpdated: ((oldState: ConsentState?, newState: ConsentState?, user: FilteredMParticleUser?) -> Unit)? =
var onConsentStateUpdated: ((oldState: ConsentState?, newState: ConsentState?) -> Unit)? =
null

override fun onConsentStateUpdated(
oldState: ConsentState?,
newState: ConsentState?,
user: FilteredMParticleUser?,
) {
onConsentStateUpdated?.invoke(oldState, newState, user)
onConsentStateUpdated?.invoke(oldState, newState)
}

override fun onSetAllUserAttributes(
userAttributes: Map<String?, String?>?,
userAttributeLists: Map<String?, List<String>>?,
user: FilteredMParticleUser?,
) {
onSetAllUserAttributes?.invoke(userAttributes, userAttributeLists, user)
onSetAllUserAttributes?.invoke(userAttributes, userAttributeLists)
userAttributes?.forEach { onAttributeReceived?.invoke(it.key, it.value) }
}

override fun onSetUserAttribute(
key: String?,
value: Any?,
user: FilteredMParticleUser?,
) {
onSetUserAttribute?.invoke(key, value, user)
onSetUserAttribute?.invoke(key, value)
onAttributeReceived?.invoke(key, value)
onUserReceived?.invoke(user)
onUserReceived?.invoke(null)
}

override fun onSetUserTag(
key: String?,
user: FilteredMParticleUser?,
) {
onSetUserTag?.invoke(key, user)
onSetUserTag?.invoke(key)
onAttributeReceived?.invoke(key, null)
onUserReceived?.invoke(user)
onUserReceived?.invoke(null)
}

override fun onIncrementUserAttribute(
key: String?,
incrementedBy: Number,
value: String?,
user: FilteredMParticleUser?,
) {
onIncrementUserAttribute?.invoke(key, incrementedBy, value, user)
onIncrementUserAttribute?.invoke(key, incrementedBy, value)
onAttributeReceived?.invoke(key, value)
onUserReceived?.invoke(user)
onUserReceived?.invoke(null)
}

override fun onSetUserAttributeList(
attributeKey: String?,
attributeValueList: List<String>?,
user: FilteredMParticleUser?,
) {
onSetUserAttributeList?.invoke(attributeKey, attributeValueList, user)
onSetUserAttributeList?.invoke(attributeKey, attributeValueList)
onAttributeReceived?.invoke(attributeKey, attributeValueList)
onUserReceived?.invoke(user)
onUserReceived?.invoke(null)
}

override fun onRemoveUserAttribute(
key: String?,
user: FilteredMParticleUser?,
) {
onRemoveUserAttribute?.invoke(key, user)
onRemoveUserAttribute?.invoke(key)
onAttributeReceived?.invoke(key, null)
onUserReceived?.invoke(user)
onUserReceived?.invoke(null)
}

override fun supportsAttributeLists() = supportsAttributeLists?.invoke() ?: true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -539,50 +539,48 @@ public interface UserAttributeListener {
/**
* Called when a user attribute is removed for the current user.
*
* @param key attribute key
* @param user filtered user context for this kit
* @param key attribute key
*/
void onRemoveUserAttribute(String key, FilteredMParticleUser user);
void onRemoveUserAttribute(String key);

/**
* Called when a scalar user attribute is set for the current user.
*
* @param key attribute key
* @param value attribute value (may be non-String for some call paths)
* @param user filtered user context for this kit
*/
void onSetUserAttribute(String key, Object value, FilteredMParticleUser user);
void onSetUserAttribute(String key, Object value);

/**
* Called when a list-valued user attribute is set and {@link #supportsAttributeLists()} returns true.
*
* @param attributeKey attribute key (may be null)
* @param attributeValueList attribute values (may be null)
* @param user filtered user context for this kit (may be null)
*/
void onSetUserAttributeList(
@Nullable String attributeKey,
@Nullable List<String> attributeValueList,
@Nullable FilteredMParticleUser user);
@Nullable List<String> attributeValueList);

/**
* 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<String, String> userAttributes,
Map<String, List<String>> userAttributeLists,
FilteredMParticleUser user);
Map<String, List<String>> userAttributeLists);

void onIncrementUserAttribute(String key, Number incrementedBy, String value, FilteredMParticleUser user);
void onIncrementUserAttribute(String key, Number incrementedBy, String value);

void onSetUserTag(String key, FilteredMParticleUser user);
void onSetUserTag(String key);

void onConsentStateUpdated(ConsentState oldState, ConsentState newState, FilteredMParticleUser user);
void onConsentStateUpdated(ConsentState oldState, ConsentState newState);

KitConfiguration getConfiguration();

String getName();
}

public interface BatchListener {
Expand Down
Loading
Loading