dm-91
This commit is contained in:
parent
1a064c3537
commit
bcd7b5f141
2 changed files with 38 additions and 0 deletions
|
|
@ -95,4 +95,8 @@ dependencies {
|
|||
implementation("androidx.emoji2:emoji2:$emoji2Version")
|
||||
implementation("androidx.emoji2:emoji2-bundled:$emoji2Version") // 自帶字型包
|
||||
|
||||
val roomVersion = "2.6.1" // 可以使用目前穩定的 2.6.1 或最新版本
|
||||
implementation("androidx.room:room-runtime:$roomVersion")
|
||||
implementation("androidx.room:room-ktx:$roomVersion") // 支援 Flow 必須要加這行
|
||||
ksp("androidx.room:room-compiler:$roomVersion") // 使用 KSP 來編譯 Room 註解
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package com.example.login_v3.home.Message.ViewModel.Detail
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Entity
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy
|
||||
import androidx.room.PrimaryKey
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import androidx.room.Query
|
||||
|
||||
enum class MessageStatus { SENDING, SUCCESS, FAILED }
|
||||
|
||||
@Entity(tableName = "messages")
|
||||
data class MessageEntity(
|
||||
@PrimaryKey val id: String, // 臨時訊息可以用 UUID.randomUUID().toString()
|
||||
val roomId: String,
|
||||
val content: String,
|
||||
val senderId: String,
|
||||
val timestamp: Long,
|
||||
val status: MessageStatus // 👈 核心:用來控制 UI 顯示樣式
|
||||
)
|
||||
|
||||
@Dao
|
||||
interface MessageDao {
|
||||
// 💡 監聽特定聊天室的訊息流
|
||||
@Query("SELECT * FROM messages WHERE roomId = :roomId ORDER BY timestamp ASC")
|
||||
fun getMessagesFlow(roomId: String): Flow<List<MessageEntity>>
|
||||
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||
suspend fun insertOrUpdate(message: MessageEntity)
|
||||
|
||||
@Query("DELETE FROM messages WHERE id = :id")
|
||||
suspend fun deleteById(id: String)
|
||||
}
|
||||
Loading…
Reference in a new issue