Добавлено сохранение аватаров для групповых сообщений, улучшена логика обработки ключей диалога в компонентах сообщений.

This commit is contained in:
2026-03-07 18:08:30 +05:00
parent c5737e51b0
commit c674a1ea99
4 changed files with 28 additions and 10 deletions

View File

@@ -764,10 +764,13 @@ class MessageRepository private constructor(private val context: Context) {
groupKey
)
// 📸 Обрабатываем AVATAR attachments - сохраняем аватар отправителя
// 📸 Обрабатываем AVATAR attachments:
// в личке — сохраняем аватар отправителя, в группе — аватар группы (desktop parity)
val avatarOwnerKey =
if (isGroupMessage) packet.toPublicKey else packet.fromPublicKey
processAvatarAttachments(
packet.attachments,
packet.fromPublicKey,
avatarOwnerKey,
packet.chachaKey,
privateKey,
plainKeyAndNonce,
@@ -1510,7 +1513,7 @@ class MessageRepository private constructor(private val context: Context) {
*/
private suspend fun processAvatarAttachments(
attachments: List<MessageAttachment>,
fromPublicKey: String,
avatarOwnerKey: String,
encryptedKey: String,
privateKey: String,
plainKeyAndNonce: ByteArray? = null,
@@ -1540,18 +1543,18 @@ class MessageRepository private constructor(private val context: Context) {
if (decryptedBlob != null) {
// 2. Сохраняем аватар в кэш
val filePath =
AvatarFileManager.saveAvatar(context, decryptedBlob, fromPublicKey)
AvatarFileManager.saveAvatar(context, decryptedBlob, avatarOwnerKey)
val entity =
AvatarCacheEntity(
publicKey = fromPublicKey,
publicKey = avatarOwnerKey,
avatar = filePath,
timestamp = System.currentTimeMillis()
)
avatarDao.insertAvatar(entity)
// 3. Очищаем старые аватары (оставляем последние 5)
avatarDao.deleteOldAvatars(fromPublicKey, 5)
avatarDao.deleteOldAvatars(avatarOwnerKey, 5)
} else {}
} catch (e: Exception) {}
}