package dev.solsynth.snConnect.models import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonIgnoreUnknownKeys import kotlinx.serialization.json.decodeFromJsonElement @OptIn(ExperimentalSerializationApi::class) @JsonIgnoreUnknownKeys @Serializable data class SnChatMessage( val id: String, val type: String = "text", val content: String?, val nonce: String?, @SerialName("members_mentioned") val membersMentioned: List? = emptyList(), @SerialName("edited_at") val editedAt: String?, val attachments: List = emptyList(), // val reactions: List = emptyList(), // Placeholder @SerialName("replied_message_id") val repliedMessageId: String?, @SerialName("forwarded_message_id") val forwardedMessageId: String?, @SerialName("sender_id") val senderId: String, val sender: SnChatMember, @SerialName("chat_room") val chatRoom: SnChatRoom, @SerialName("chat_room_id") val chatRoomId: String, @SerialName("created_at") val createdAt: String, @SerialName("updated_at") val updatedAt: String, @SerialName("deleted_at") val deletedAt: String?, ) { companion object { private val json = Json { ignoreUnknownKeys = true } fun fromJson(jsonElement: JsonElement): SnChatMessage { return json.decodeFromJsonElement(jsonElement) } } }