diff --git a/app/src/main/java/com/example/login_v3/data/api/Main_API_Service.kt b/app/src/main/java/com/example/login_v3/data/api/Main_API_Service.kt index 32f4511..fda1909 100644 --- a/app/src/main/java/com/example/login_v3/data/api/Main_API_Service.kt +++ b/app/src/main/java/com/example/login_v3/data/api/Main_API_Service.kt @@ -84,4 +84,10 @@ interface TecnologiaApi { @GET("api/dm/rooms") suspend fun getChatRooms(): Response + // Get dm message + @GET("api/dm/{room_id}/messages") + suspend fun getChatMessages( + @Path("room_id") roomId: String + ): Response + } \ No newline at end of file diff --git a/app/src/main/java/com/example/login_v3/data/api/api_class/DM_Basic.kt b/app/src/main/java/com/example/login_v3/data/api/api_class/DM_Basic.kt index 9c560d0..2391890 100644 --- a/app/src/main/java/com/example/login_v3/data/api/api_class/DM_Basic.kt +++ b/app/src/main/java/com/example/login_v3/data/api/api_class/DM_Basic.kt @@ -71,4 +71,47 @@ val Partner.fullContactAvatarUrl: Any avatarUrl // 已經是完整網址就直接用 } else { "http://192.168.0.217$avatarUrl" // 否則補上 Base URL - } \ No newline at end of file + } + + + +//Message DM +@JsonClass(generateAdapter = true) +data class MessageResponse( + @Json(name = "has_more") val hasMore: Boolean, + @Json(name = "limit") val limit: Int, + @Json(name = "messages") val messages: List, + @Json(name = "next_cursor") val nextCursor: String? = null +) + +@JsonClass(generateAdapter = true) +data class Message( + @Json(name = "id") val id: String, + @Json(name = "chat_room_id") val chatRoomId: String, + @Json(name = "sender_id") val senderId: String, + @Json(name = "content") val content: String, + @Json(name = "type") val type: String, + @Json(name = "created_at") val createdAt: String, + @Json(name = "edited_at") val editedAt: String? = null, + @Json(name = "deleted_at") val deletedAt: String? = null, + @Json(name = "is_edited") val isEdited: Boolean, + @Json(name = "is_deleted") val isDeleted: Boolean, + @Json(name = "reply_to_id") val replyToId: String? = null, + @Json(name = "forwarded_from_id") val forwardedFromId: String? = null, + @Json(name = "forwarded_from_room_id") val forwardedFromRoomId: String? = null, + @Json(name = "attachment") val attachment: Attachment? = null, + @Json(name = "reactions") val reactions: List = emptyList() // 若 API 沒給此欄位,給予空列表 +){ + @JsonClass(generateAdapter = true) + data class Attachment( + @Json(name = "filename") val filename: String, + @Json(name = "mime_type") val mimeType: String, + @Json(name = "size") val size: Long + ) + @JsonClass(generateAdapter = true) + data class Reaction( + @Json(name = "emoji") val emoji: String, + @Json(name = "count") val count: Int, + @Json(name = "me_reacted") val meReacted: Boolean + ) +} \ No newline at end of file