feat: enhance versioning and avatar handling with dynamic properties and improved UI interactions
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.rosetta.messenger.data
|
||||
|
||||
import com.rosetta.messenger.network.MessageAttachment
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
@@ -27,7 +28,8 @@ object ForwardManager {
|
||||
val timestamp: Long,
|
||||
val isOutgoing: Boolean,
|
||||
val senderPublicKey: String, // publicKey отправителя сообщения
|
||||
val originalChatPublicKey: String // publicKey чата откуда пересылается
|
||||
val originalChatPublicKey: String, // publicKey чата откуда пересылается
|
||||
val attachments: List<MessageAttachment> = emptyList()
|
||||
)
|
||||
|
||||
// Сообщения для пересылки
|
||||
@@ -120,4 +122,22 @@ object ForwardManager {
|
||||
emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Атомарно получить forward-сообщения для конкретного чата и очистить pending state.
|
||||
* Это повторяет desktop-подход "consume once" после перехода в целевой диалог.
|
||||
*/
|
||||
@Synchronized
|
||||
fun consumeForwardMessagesForChat(publicKey: String): List<ForwardMessage> {
|
||||
val selectedKey = _selectedChatPublicKey.value
|
||||
val pending = _forwardMessages.value
|
||||
if (selectedKey != publicKey || pending.isEmpty()) {
|
||||
return emptyList()
|
||||
}
|
||||
|
||||
_forwardMessages.value = emptyList()
|
||||
_selectedChatPublicKey.value = null
|
||||
_showChatPicker.value = false
|
||||
return pending
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user