From 346ca621d0e1fa33d60dccb657c33c24c9f63a44 Mon Sep 17 00:00:00 2001 From: Eric85710 Date: Tue, 9 Jun 2026 15:50:18 +0800 Subject: [PATCH] dm-103 --- .../home/Message/ViewModel/Detail/Message_Cache.kt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/example/login_v3/home/Message/ViewModel/Detail/Message_Cache.kt b/app/src/main/java/com/example/login_v3/home/Message/ViewModel/Detail/Message_Cache.kt index 1f65148..cb3d494 100644 --- a/app/src/main/java/com/example/login_v3/home/Message/ViewModel/Detail/Message_Cache.kt +++ b/app/src/main/java/com/example/login_v3/home/Message/ViewModel/Detail/Message_Cache.kt @@ -28,13 +28,23 @@ data class MessageEntity( @Dao interface MessageDao { - // 💡 修正這裡:WHERE 條件欄位改為 chatRoomId - @Query("SELECT * FROM messages WHERE chatRoomId = :roomId ORDER BY createdAt DESC") // 👈 確保是 DESC(降序) + // 1. 根據 roomId 監聽整個聊天室的訊息 Flow + @Query("SELECT * FROM messages WHERE chatRoomId = :roomId ORDER BY createdAt DESC") fun getMessagesFlow(roomId: String): Flow> + // 2. ✨【新增】根據訊息 id 查詢單筆資料(樂觀更新備份用) + @Query("SELECT * FROM messages WHERE id = :messageId LIMIT 1") + suspend fun getMessageById(messageId: String): MessageEntity? + + // 3. 插入或更新單筆訊息 @Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun insertOrUpdate(message: MessageEntity) + // 4. ✨【優化】支援批次插入或更新(可以順便把 refreshChatMessages 裡面的 forEach 換掉,效能更好) + @Insert(onConflict = OnConflictStrategy.REPLACE) + suspend fun insertOrUpdateList(messages: List) + + // 5. 根據 id 刪除特定訊息 @Query("DELETE FROM messages WHERE id = :id") suspend fun deleteById(id: String) } \ No newline at end of file