dm-48
This commit is contained in:
parent
bb096e8531
commit
f8799511de
1 changed files with 32 additions and 0 deletions
|
|
@ -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<String>) : 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>(ReactionUsersState.Idle)
|
||||
val reactionUsersState: StateFlow<ReactionUsersState> = _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
|
||||
|
|
|
|||
Loading…
Reference in a new issue