From f8799511de95b0fda10e653584e92157478098aa Mon Sep 17 00:00:00 2001 From: Eric85710 Date: Wed, 27 May 2026 05:13:59 +0800 Subject: [PATCH] dm-48 --- .../Detail/Message_Messaging_ViewModel.kt | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/app/src/main/java/com/example/login_v3/home/Message/ViewModel/Detail/Message_Messaging_ViewModel.kt b/app/src/main/java/com/example/login_v3/home/Message/ViewModel/Detail/Message_Messaging_ViewModel.kt index 9753152..ef8b1df 100644 --- a/app/src/main/java/com/example/login_v3/home/Message/ViewModel/Detail/Message_Messaging_ViewModel.kt +++ b/app/src/main/java/com/example/login_v3/home/Message/ViewModel/Detail/Message_Messaging_ViewModel.kt @@ -19,6 +19,13 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.first +//emoji reaction state +sealed class ReactionUsersState { + object Idle : ReactionUsersState() // 沒點擊時的閒置狀態 + object Loading : ReactionUsersState() // 載入中 + data class Success(val users: List) : ReactionUsersState() // 成功取得名單 + data class Error(val message: String) : ReactionUsersState() // 取得失敗 +} //message sending state sealed class SendMessageState { @@ -183,6 +190,31 @@ class ChatViewModel @Inject constructor( } } + private val _reactionUsersState = MutableStateFlow(ReactionUsersState.Idle) + val reactionUsersState: StateFlow = _reactionUsersState.asStateFlow() + + /** + * 💡 新增:載入點擊特定 Emoji 的使用者名單 + */ + fun loadMessageReactionUsers(roomId: String, messageId: String, emoji: String) { + viewModelScope.launch { + _reactionUsersState.value = ReactionUsersState.Loading + + val result = repository.getMessageReactionUsers( + roomId = roomId, + messageId = messageId, + emoji = emoji + ) + + result.onSuccess { response -> + _reactionUsersState.value = ReactionUsersState.Success(response.users) + }.onFailure { error -> + Log.e("ChatViewModel", "Get reaction users failed", error) + _reactionUsersState.value = ReactionUsersState.Error(error.message ?: "無法取得按讚名單") + } + } + } + //新增:重設發送狀態的 function fun resetSendMessageState() { _sendMessageState.value = SendMessageState.Idle