feat: Update avatar handling to include data URL prefix and improve encryption process in ChatViewModel

This commit is contained in:
k1ngsterr1
2026-01-26 22:25:11 +05:00
parent 9ea4726a9b
commit 0d1903691f

View File

@@ -1879,6 +1879,15 @@ class ChatViewModel(application: Application) : AndroidViewModel(application) {
Log.d(TAG, "👤 Avatar blob read successfully, length: ${avatarBlob.length}")
Log.d(TAG, "👤 Avatar blob first 100 chars: ${avatarBlob.take(100)}")
// 🔥 КРИТИЧНО: Desktop ожидает полный data URL, а не просто Base64!
// Добавляем префикс если его нет
val avatarDataUrl = if (avatarBlob.startsWith("data:image")) {
avatarBlob
} else {
"data:image/png;base64,$avatarBlob"
}
Log.d(TAG, "👤 Avatar data URL length: ${avatarDataUrl.length}")
// Генерируем blurhash для preview (как на desktop)
val avatarBlurhash = withContext(Dispatchers.IO) {
try {
@@ -1925,7 +1934,8 @@ class ChatViewModel(application: Application) : AndroidViewModel(application) {
// 🔥 КРИТИЧНО: Как в desktop - шифруем аватар с ChaCha ключом (plainKeyAndNonce)
// НЕ с AVATAR_PASSWORD! AVATAR_PASSWORD используется только для локального хранения
val encryptedAvatarBlob = MessageCrypto.encryptReplyBlob(avatarBlob, plainKeyAndNonce)
// Используем avatarDataUrl (с префиксом data:image/...) а не avatarBlob!
val encryptedAvatarBlob = MessageCrypto.encryptReplyBlob(avatarDataUrl, plainKeyAndNonce)
Log.d(TAG, "👤 Avatar encrypted with ChaCha key, length: ${encryptedAvatarBlob.length}")
val avatarAttachmentId = "avatar_$timestamp"