41 lines
1.6 KiB
Kotlin
41 lines
1.6 KiB
Kotlin
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<String>? = emptyList(),
|
|
@SerialName("edited_at") val editedAt: String?,
|
|
val attachments: List<SnCloudFile> = emptyList(),
|
|
// val reactions: List<SnChatReaction> = 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<SnChatMessage>(jsonElement)
|
|
}
|
|
}
|
|
}
|