Skip to content

Commit 4fef7a8

Browse files
authored
fix: prevent message type crash in release builds (#623)
1 parent f24c72a commit 4fef7a8

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

messaginginapp/src/main/java/io/customer/messaginginapp/gist/data/AnonymousMessageManager.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package io.customer.messaginginapp.gist.data
22

33
import com.google.gson.Gson
4-
import com.google.gson.reflect.TypeToken
54
import io.customer.messaginginapp.di.inAppMessagingManager
65
import io.customer.messaginginapp.di.inAppPreferenceStore
76
import io.customer.messaginginapp.gist.data.model.BroadcastFrequency
@@ -32,7 +31,6 @@ internal class AnonymousMessageManagerImpl() : AnonymousMessageManager {
3231

3332
companion object {
3433
private const val ANONYMOUS_MESSAGES_EXPIRY_MINUTES = 60L
35-
private val ANONYMOUS_MESSAGE_LIST_TYPE = object : TypeToken<List<Message>>() {}.type
3634
}
3735

3836
override fun updateAnonymousMessagesLocalStore(messages: List<Message>) {
@@ -117,11 +115,13 @@ internal class AnonymousMessageManagerImpl() : AnonymousMessageManager {
117115
inAppPreferenceStore.setAnonymousDismissed(anonymousId, true)
118116
logger.debug("Marked anonymous message $anonymousId as permanently dismissed (count=1)")
119117
}
118+
120119
anonymousDetails.delay > 0 -> {
121120
val nextShowTimeMillis = System.currentTimeMillis() + (anonymousDetails.delay * 1000L)
122121
inAppPreferenceStore.setAnonymousNextShowTime(anonymousId, nextShowTimeMillis)
123122
logger.debug("Marked anonymous message $anonymousId as seen, shown $numberOfTimesShown times, next show time: ${java.util.Date(nextShowTimeMillis)}")
124123
}
124+
125125
else -> {
126126
logger.debug("Marked anonymous message $anonymousId as seen, shown $numberOfTimesShown times, no delay restriction")
127127
}
@@ -152,7 +152,9 @@ internal class AnonymousMessageManagerImpl() : AnonymousMessageManager {
152152
val anonymousMessagesJson = inAppPreferenceStore.getAnonymousMessages() ?: return emptyList()
153153

154154
return try {
155-
gson.fromJson<List<Message>>(anonymousMessagesJson, ANONYMOUS_MESSAGE_LIST_TYPE) ?: emptyList()
155+
// Use Array<Message> to avoid R8/ProGuard issues with generic TypeToken
156+
val messagesArray = gson.fromJson(anonymousMessagesJson, Array<Message>::class.java)
157+
messagesArray?.toList() ?: emptyList()
156158
} catch (e: Exception) {
157159
logger.debug("Error parsing stored anonymous messages: ${e.message}")
158160
emptyList()

0 commit comments

Comments
 (0)