From d5f17ef99cf34cb46954eafa719d7c3a7aed7ec3 Mon Sep 17 00:00:00 2001 From: Leendert de Borst Date: Wed, 21 May 2025 14:56:18 +0200 Subject: [PATCH] Add base64 conversion logic (#846) --- .../aliasvault/app/vaultstore/VaultStore.kt | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/apps/mobile-app/android/app/src/main/java/net/aliasvault/app/vaultstore/VaultStore.kt b/apps/mobile-app/android/app/src/main/java/net/aliasvault/app/vaultstore/VaultStore.kt index 9fc08a31d..70b8f8353 100644 --- a/apps/mobile-app/android/app/src/main/java/net/aliasvault/app/vaultstore/VaultStore.kt +++ b/apps/mobile-app/android/app/src/main/java/net/aliasvault/app/vaultstore/VaultStore.kt @@ -100,7 +100,17 @@ class VaultStore(private val storageProvider: StorageProvider) { val results = mutableListOf>() dbConnection?.let { db -> - val cursor = db.rawQuery(query, params.map { it?.toString() }.toTypedArray()) + // Convert any base64 strings with the special flag to blobs + val convertedParams = params.map { param -> + if (param is String && param.startsWith("av-base64-to-blob:")) { + val base64 = param.substring("av-base64-to-blob:".length) + Base64.decode(base64, Base64.DEFAULT) + } else { + param + } + }.toTypedArray() + + val cursor = db.rawQuery(query, convertedParams.map { it?.toString() }.toTypedArray()) cursor.use { val columnNames = it.columnNames @@ -125,7 +135,17 @@ class VaultStore(private val storageProvider: StorageProvider) { fun executeUpdate(query: String, params: Array): Int { dbConnection?.let { db -> - db.execSQL(query, params.map { it?.toString() }.toTypedArray()) + // Convert any base64 strings with the special flag to blobs + val convertedParams = params.map { param -> + if (param is String && param.startsWith("av-base64-to-blob:")) { + val base64 = param.substring("av-base64-to-blob:".length) + Base64.decode(base64, Base64.DEFAULT) + } else { + param + } + }.toTypedArray() + + db.execSQL(query, convertedParams) // Get the number of affected rows val cursor = db.rawQuery("SELECT changes()", null) cursor.use {