diff --git a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/parser2/DirectEventParser.kt b/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/parser2/DirectEventParser.kt index 2e019c6ce56..7da3cb8b43f 100644 --- a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/parser2/DirectEventParser.kt +++ b/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/parser2/DirectEventParser.kt @@ -106,12 +106,17 @@ internal class DirectEventParser( /** * Attempts to parse [raw] JSON into a [ChatEvent] using a direct adapter. - * Returns `null` if the event type is not supported by any direct adapter. + * Returns `null` if the event type is not supported by any direct adapter, + * or if the matching adapter throws — allowing the caller to fall back to the DTO path. */ fun parse(raw: String): ChatEvent? { val type = extractType(raw) ?: return null val adapter = adapterMap[type] ?: return null - return adapter.fromJson(raw) + return runCatching { adapter.fromJson(raw) } + .onFailure { e -> + logger.v { "Direct parse failed for '$type'; falling back to DTO path: ${e.message}" } + } + .getOrNull() } companion object { diff --git a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/parser2/direct/NewMessageEventAdapter.kt b/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/parser2/direct/NewMessageEventAdapter.kt index deaecf8cab6..5898682e80a 100644 --- a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/parser2/direct/NewMessageEventAdapter.kt +++ b/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/parser2/direct/NewMessageEventAdapter.kt @@ -138,7 +138,7 @@ internal class NewMessageEventAdapter( return NewMessageEvent( type = type, - createdAt = createdAt ?: Date(0), + createdAt = createdAt, rawCreatedAt = rawCreatedAt, user = user, cid = cid,