feat: Update database version to 10 and implement migration to clear large blob attachments; adjust blob handling for IMAGE/FILE types in MessageRepository and ChatViewModel
This commit is contained in:
@@ -1268,7 +1268,9 @@ class ChatViewModel(application: Application) : AndroidViewModel(application) {
|
||||
updateMessageStatus(messageId, MessageStatus.SENT)
|
||||
}
|
||||
|
||||
// 4. 💾 Сохранение в БД с attachments (зашифрованный blob для MESSAGES)
|
||||
// 4. 💾 Сохранение в БД с attachments
|
||||
// ⚠️ НЕ сохраняем blob для IMAGE/FILE - слишком большие (SQLite CursorWindow 2MB limit)
|
||||
// Только MESSAGES (reply) сохраняем - они небольшие
|
||||
val attachmentsJson = if (messageAttachments.isNotEmpty()) {
|
||||
JSONArray().apply {
|
||||
messageAttachments.forEach { att ->
|
||||
@@ -1276,8 +1278,13 @@ class ChatViewModel(application: Application) : AndroidViewModel(application) {
|
||||
put("id", att.id)
|
||||
put("type", att.type.value)
|
||||
put("preview", att.preview)
|
||||
// 🔥 Для MESSAGES сохраняем зашифрованный приватным ключом, для остальных - как есть
|
||||
put("blob", if (att.type == AttachmentType.MESSAGES) replyBlobForDatabase else att.blob)
|
||||
// Только для MESSAGES сохраняем blob (reply data небольшие)
|
||||
// Для IMAGE/FILE - пустой blob
|
||||
val blobToSave = when (att.type) {
|
||||
AttachmentType.MESSAGES -> replyBlobForDatabase ?: ""
|
||||
else -> "" // IMAGE, FILE - не сохраняем blob
|
||||
}
|
||||
put("blob", blobToSave)
|
||||
})
|
||||
}
|
||||
}.toString()
|
||||
@@ -1397,13 +1404,14 @@ class ChatViewModel(application: Application) : AndroidViewModel(application) {
|
||||
updateMessageStatus(messageId, MessageStatus.SENT)
|
||||
}
|
||||
|
||||
// Сохраняем в БД с зашифрованным blob'ом
|
||||
// ⚠️ НЕ сохраняем blob в БД - он слишком большой (SQLite CursorWindow 2MB limit)
|
||||
// Изображение должно храниться в файловой системе или загружаться с сервера при необходимости
|
||||
val attachmentsJson = JSONArray().apply {
|
||||
put(JSONObject().apply {
|
||||
put("id", imageAttachment.id)
|
||||
put("type", AttachmentType.IMAGE.value)
|
||||
put("preview", blurhash)
|
||||
put("blob", imageBlobForDatabase)
|
||||
put("blob", "") // Пустой blob - не сохраняем в БД!
|
||||
})
|
||||
}.toString()
|
||||
|
||||
@@ -1521,12 +1529,14 @@ class ChatViewModel(application: Application) : AndroidViewModel(application) {
|
||||
updateMessageStatus(messageId, MessageStatus.SENT)
|
||||
}
|
||||
|
||||
// ⚠️ НЕ сохраняем blob в БД - он слишком большой (SQLite CursorWindow 2MB limit)
|
||||
// Файл должен храниться в файловой системе или загружаться с сервера при необходимости
|
||||
val attachmentsJson = JSONArray().apply {
|
||||
put(JSONObject().apply {
|
||||
put("id", fileAttachment.id)
|
||||
put("type", AttachmentType.FILE.value)
|
||||
put("preview", preview)
|
||||
put("blob", fileBlobForDatabase)
|
||||
put("blob", "") // Пустой blob - не сохраняем в БД!
|
||||
})
|
||||
}.toString()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user