This commit is contained in:
Eric85710 2026-05-26 15:09:20 +08:00
parent 37ceca47b4
commit 4f187feab2

View file

@ -48,8 +48,13 @@ class ChatViewModel @Inject constructor(
private val tokenManager: TokenManager private val tokenManager: TokenManager
) : ViewModel() { ) : ViewModel() {
//reply function
private val _replyingMessage = MutableStateFlow<Message?>(null) private val _replyingMessage = MutableStateFlow<Message?>(null)
val replyingMessage: StateFlow<Message?> = _replyingMessage.asStateFlow() val replyingMessage: StateFlow<Message?> = _replyingMessage.asStateFlow()
// 💡 新增:當使用者點選某條訊息的「回覆」按鈕時呼叫
fun setReplyingMessage(message: Message?) {
_replyingMessage.value = message
}
//UI state var //UI state var
private val _uiState = MutableStateFlow<MessagesUiState>(MessagesUiState.Loading) private val _uiState = MutableStateFlow<MessagesUiState>(MessagesUiState.Loading)
@ -119,10 +124,18 @@ class ChatViewModel @Inject constructor(
viewModelScope.launch { viewModelScope.launch {
_sendMessageState.value = SendMessageState.Loading _sendMessageState.value = SendMessageState.Loading
val result = repository.sendMessage(roomId, content, replyToId) // 💡 取得當前是否有正在回覆的訊息 ID
val replyToId = _replyingMessage.value?.id
val result = repository.sendMessage(
roomId = roomId,
content = content,
replyToId = replyToId
)
result.onSuccess { newMessage -> result.onSuccess { newMessage ->
_sendMessageState.value = SendMessageState.Success(newMessage) _sendMessageState.value = SendMessageState.Success(newMessage)
_replyingMessage.value = null
// 😎【超讚的體驗優化】:發送成功後,直接把新訊息手動塞進現有的 UI 列表裡 // 😎【超讚的體驗優化】:發送成功後,直接把新訊息手動塞進現有的 UI 列表裡
val currentState = _uiState.value val currentState = _uiState.value