feat: Update avatar handling to include data URL prefix and improve encryption process in ChatViewModel
This commit is contained in:
@@ -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 read successfully, length: ${avatarBlob.length}")
|
||||||
Log.d(TAG, "👤 Avatar blob first 100 chars: ${avatarBlob.take(100)}")
|
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)
|
// Генерируем blurhash для preview (как на desktop)
|
||||||
val avatarBlurhash = withContext(Dispatchers.IO) {
|
val avatarBlurhash = withContext(Dispatchers.IO) {
|
||||||
try {
|
try {
|
||||||
@@ -1925,7 +1934,8 @@ class ChatViewModel(application: Application) : AndroidViewModel(application) {
|
|||||||
|
|
||||||
// 🔥 КРИТИЧНО: Как в desktop - шифруем аватар с ChaCha ключом (plainKeyAndNonce)
|
// 🔥 КРИТИЧНО: Как в desktop - шифруем аватар с ChaCha ключом (plainKeyAndNonce)
|
||||||
// НЕ с AVATAR_PASSWORD! AVATAR_PASSWORD используется только для локального хранения
|
// НЕ с 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}")
|
Log.d(TAG, "👤 Avatar encrypted with ChaCha key, length: ${encryptedAvatarBlob.length}")
|
||||||
|
|
||||||
val avatarAttachmentId = "avatar_$timestamp"
|
val avatarAttachmentId = "avatar_$timestamp"
|
||||||
|
|||||||
Reference in New Issue
Block a user