@@ -323,19 +323,19 @@ open class AppboyKit : KitIntegration(), AttributeListener, CommerceListener,
323323 }
324324 else -> {
325325 if (subscriptionGroupIds?.containsKey(key) == true ) {
326- if (attributeValue == " true " ) {
327- value.addToSubscriptionGroup(
328- subscriptionGroupIds?.get(key).toString()
329- )
330- } else if (attributeValue == " false " ) {
331- value.removeFromSubscriptionGroup(
332- subscriptionGroupIds?.get(key).toString()
333- )
334- } else {
335- Logger .warning(
336- " unable to set Subscription Group ID for user attribute: "
337- + key + " due to invalid value data type. expected value data type should be Boolean "
338- )
326+ val groupId = subscriptionGroupIds?.get(key)
327+ when (attributeValue.lowercase()) {
328+ " true " -> {
329+ groupId?. let { value.addToSubscriptionGroup(it) }
330+ }
331+ " false " -> {
332+ groupId?. let { value.removeFromSubscriptionGroup(it) }
333+ }
334+ else -> {
335+ Logger .warning(
336+ " Unable to set Subscription Group ID for user attribute: $key due to invalid value data type. Expected Boolean. "
337+ )
338+ }
339339 }
340340 } else {
341341 if (key.startsWith(" $" )) {
@@ -988,21 +988,26 @@ open class AppboyKit : KitIntegration(), AttributeListener, CommerceListener,
988988 }
989989
990990 private fun getSubscriptionGroupIds (subscriptionGroupMap : String ): MutableMap <String , String > {
991- val subscriptionGroupsArray = JSONArray (subscriptionGroupMap)
992991 val subscriptionGroupIds = mutableMapOf<String , String >()
993992
994993 if (subscriptionGroupMap.isEmpty()) {
995994 return subscriptionGroupIds
996995 }
997996
998- for (i in 0 until subscriptionGroupsArray.length()) {
999- val subscriptionGroup = subscriptionGroupsArray.getJSONObject(i)
1000- val key = subscriptionGroup.getString(" map" )
1001- val value = subscriptionGroup.getString(" value" )
1002- subscriptionGroupIds[key] = value
1003- }
997+ val subscriptionGroupsArray = JSONArray (subscriptionGroupMap)
1004998
1005- return subscriptionGroupIds
999+ return try {
1000+ for (i in 0 until subscriptionGroupsArray.length()) {
1001+ val subscriptionGroup = subscriptionGroupsArray.getJSONObject(i)
1002+ val key = subscriptionGroup.getString(" map" )
1003+ val value = subscriptionGroup.getString(" value" )
1004+ subscriptionGroupIds[key] = value
1005+ }
1006+ subscriptionGroupIds
1007+ } catch (e: JSONException ) {
1008+ Logger .warning(" Braze, unable to parse \" subscriptionGroup\" " )
1009+ mutableMapOf ()
1010+ }
10061011 }
10071012
10081013 fun getImpressionListParameters (impressionList : List <Impression >): JSONArray {
0 commit comments