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.asStateFlow
|
||||||
import kotlinx.coroutines.flow.first
|
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
|
//message sending state
|
||||||
sealed class SendMessageState {
|
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
|
//新增:重設發送狀態的 function
|
||||||
fun resetSendMessageState() {
|
fun resetSendMessageState() {
|
||||||
_sendMessageState.value = SendMessageState.Idle
|
_sendMessageState.value = SendMessageState.Idle
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue