feat: enhance versioning and avatar handling with dynamic properties and improved UI interactions

This commit is contained in:
2026-02-10 20:41:32 +05:00
parent bbaa04cda5
commit a0ef378909
12 changed files with 401 additions and 99 deletions

View File

@@ -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
}
}