dm-43
This commit is contained in:
parent
37ceca47b4
commit
4f187feab2
1 changed files with 14 additions and 1 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue