dm-51
This commit is contained in:
parent
e0b522e0d7
commit
b14cd522fe
2 changed files with 37 additions and 3 deletions
|
|
@ -247,4 +247,25 @@ class ChatRoomsRepository @Inject constructor(
|
|||
Result.failure(e)
|
||||
}
|
||||
}
|
||||
|
||||
// 新增訊息的 Emoji 反應
|
||||
suspend fun addMessageReaction(
|
||||
roomId: String,
|
||||
messageId: String,
|
||||
emoji: String
|
||||
): Result<Unit> {
|
||||
return try {
|
||||
val response = api.addMessageReaction(roomId, messageId, emoji)
|
||||
|
||||
if (response.isSuccessful) {
|
||||
// 204 成功時沒有 body,直接回傳 Unit
|
||||
Result.success(Unit)
|
||||
} else {
|
||||
val errorMsg = response.errorBody()?.string() ?: "未知錯誤"
|
||||
Result.failure(Exception("新增反應失敗,錯誤碼: ${response.code()}, 訊息: $errorMsg"))
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Result.failure(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -193,9 +193,7 @@ class ChatViewModel @Inject constructor(
|
|||
private val _reactionUsersState = MutableStateFlow<ReactionUsersState>(ReactionUsersState.Idle)
|
||||
val reactionUsersState: StateFlow<ReactionUsersState> = _reactionUsersState.asStateFlow()
|
||||
|
||||
/**
|
||||
* 💡 新增:載入點擊特定 Emoji 的使用者名單
|
||||
*/
|
||||
//get emoji reaction
|
||||
fun loadMessageReactionUsers(roomId: String, messageId: String, emoji: String) {
|
||||
viewModelScope.launch {
|
||||
_reactionUsersState.value = ReactionUsersState.Loading
|
||||
|
|
@ -214,6 +212,21 @@ class ChatViewModel @Inject constructor(
|
|||
}
|
||||
}
|
||||
}
|
||||
//add emoji reaction
|
||||
fun addMessageReaction(roomId: String, messageId: String, emoji: String) {
|
||||
viewModelScope.launch {
|
||||
val result = repository.addMessageReaction(roomId, messageId, emoji)
|
||||
|
||||
result.onSuccess {
|
||||
// 😎【超讚體驗優化】:點擊成功後,除了通知後端,
|
||||
// 也可以選擇直接呼叫 loadMessages(roomId) 來重新拉取最新帶有按讚數量的訊息列表
|
||||
loadMessages(roomId)
|
||||
}.onFailure { error ->
|
||||
Log.e("ChatViewModel", "Add reaction failed", error)
|
||||
// 這裡可以依需求決定要不要用 Toast 提示使用者點擊失敗
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 💡 請確保這段程式碼有確實待在 ChatViewModel 裡面
|
||||
fun resetReactionUsersState() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue