Sync chat from SN

This commit is contained in:
2025-10-05 02:42:21 +08:00
parent affe9a40f5
commit e77841fc09
16 changed files with 580 additions and 17 deletions

View File

@@ -0,0 +1,40 @@
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)
}
}
}