commit 199eec8b1c1ae7883ec831d1e81b6bbab0d6ed07
parent c1f58773f5201b3d88cc99856666f0a336ef1408
Author: Iván Ávalos <avalos@disroot.org>
Date: Wed, 19 Aug 2026 22:47:11 +0200
[wallet] hide DB migration setting when already using sqlite backend
Diffstat:
4 files changed, 34 insertions(+), 22 deletions(-)
diff --git a/wallet/src/main/java/net/taler/wallet/backend/InitResponse.kt b/wallet/src/main/java/net/taler/wallet/backend/InitResponse.kt
@@ -16,12 +16,14 @@
package net.taler.wallet.backend
+import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import net.taler.wallet.exchanges.BuiltinExchange
@Serializable
data class InitResponse(
val versionInfo: WalletCoreVersion,
+ val databaseBackend: WalletDatabaseBackend,
)
@Serializable
@@ -69,12 +71,9 @@ data class WalletRunConfig(
)
}
-fun interface VersionReceiver {
- fun onVersionReceived(versionInfo: WalletCoreVersion)
-}
-
-fun interface InitErrorReceiver {
- fun onInitError(error: TalerErrorInfo)
+interface InitReceiver {
+ fun onInitReceived(init: InitResponse)
+ fun onInitErrorReceived(error: TalerErrorInfo)
}
@Serializable
@@ -89,3 +88,12 @@ data class WalletCoreVersion(
val corebankApiRange: String,
val devMode: Boolean,
)
+
+@Serializable
+enum class WalletDatabaseBackend {
+ @SerialName("indexeddb")
+ IndexedDB,
+
+ @SerialName("sqlite")
+ Sqlite,
+}
+\ No newline at end of file
diff --git a/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt b/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt
@@ -35,8 +35,7 @@ private const val WALLET_DB = "talerwalletdb.sqlite3"
class WalletBackendApi(
private val app: Application,
private val initialConfig: WalletRunConfig,
- private val versionReceiver: VersionReceiver,
- private val initErrorReceiver: InitErrorReceiver,
+ private val initReceiver: InitReceiver,
notificationReceiver: NotificationReceiver,
) {
@@ -69,9 +68,9 @@ class WalletBackendApi(
put("logLevel", "INFO")
put("config", JSONObject(BackendManager.json.encodeToString(initialConfig)))
}.onSuccess { response ->
- versionReceiver.onVersionReceived(response.versionInfo)
+ initReceiver.onInitReceived(response)
}.onError { error ->
- initErrorReceiver.onInitError(error)
+ initReceiver.onInitErrorReceived(error)
}
}
diff --git a/wallet/src/main/java/net/taler/wallet/main/MainViewModel.kt b/wallet/src/main/java/net/taler/wallet/main/MainViewModel.kt
@@ -33,13 +33,11 @@ import net.taler.common.AmountParserException
import net.taler.common.Event
import net.taler.wallet.accounts.AccountManager
import net.taler.wallet.backend.BackendManager
-import net.taler.wallet.backend.InitErrorReceiver
import net.taler.wallet.backend.NotificationPayload
import net.taler.wallet.backend.NotificationReceiver
import net.taler.wallet.backend.TalerErrorInfo
-import net.taler.wallet.backend.VersionReceiver
+import net.taler.wallet.backend.InitReceiver
import net.taler.wallet.backend.WalletBackendApi
-import net.taler.wallet.backend.WalletCoreVersion
import net.taler.wallet.backend.WalletRunConfig
import net.taler.wallet.backend.WalletRunConfig.Features
import net.taler.wallet.backend.WalletRunConfig.Testing
@@ -57,6 +55,8 @@ import net.taler.wallet.transactions.TransactionStateFilter
import net.taler.wallet.withdraw.WithdrawManager
import net.taler.wallet.BuildConfig
import net.taler.wallet.NetworkManager
+import net.taler.wallet.backend.InitResponse
+import net.taler.wallet.backend.WalletDatabaseBackend
import net.taler.wallet.donau.DonauManager
import net.taler.wallet.tokens.TokenManager
@@ -74,7 +74,7 @@ private val observabilityNotifications = listOf(
class MainViewModel(
app: Application,
-) : AndroidViewModel(app), VersionReceiver, NotificationReceiver, InitErrorReceiver {
+) : AndroidViewModel(app), InitReceiver, NotificationReceiver {
private val mDevMode = MutableLiveData(BuildConfig.DEBUG)
val devMode: LiveData<Boolean> = mDevMode
@@ -88,6 +88,8 @@ class MainViewModel(
private set
var merchantVersion: String? = null
private set
+ var databaseBackend: WalletDatabaseBackend? = null
+ private set
@set:Synchronized
private var walletConfig = WalletRunConfig(
@@ -101,7 +103,7 @@ class MainViewModel(
logLevel = if (devMode.value == true) "TRACE" else "INFO",
)
- private val api = WalletBackendApi(app, walletConfig, this, this, this)
+ private val api = WalletBackendApi(app, walletConfig, this, this)
val networkManager = NetworkManager(app.applicationContext)
val exchangeManager: ExchangeManager = ExchangeManager(api, viewModelScope)
@@ -143,15 +145,16 @@ class MainViewModel(
api.stopWallet()
}
- override fun onInitError(error: TalerErrorInfo) {
+ override fun onInitErrorReceived(error: TalerErrorInfo) {
mInitError.value = error
}
- override fun onVersionReceived(versionInfo: WalletCoreVersion) {
- walletVersion = versionInfo.implementationSemver
- walletVersionHash = versionInfo.implementationGitHash
- exchangeVersion = versionInfo.exchange
- merchantVersion = versionInfo.merchant
+ override fun onInitReceived(init: InitResponse) {
+ walletVersion = init.versionInfo.implementationSemver
+ walletVersionHash = init.versionInfo.implementationGitHash
+ exchangeVersion = init.versionInfo.exchange
+ merchantVersion = init.versionInfo.merchant
+ databaseBackend = init.databaseBackend
mInitError.value = null
}
diff --git a/wallet/src/main/java/net/taler/wallet/settings/SettingsScreen.kt b/wallet/src/main/java/net/taler/wallet/settings/SettingsScreen.kt
@@ -78,6 +78,7 @@ import net.taler.wallet.NavigateCallback
import net.taler.wallet.R
import net.taler.wallet.WalletDestination
import net.taler.wallet.backend.TalerErrorInfo
+import net.taler.wallet.backend.WalletDatabaseBackend
import net.taler.wallet.main.MainViewModel
import net.taler.wallet.withdraw.TestWithdrawStatus
@@ -291,7 +292,7 @@ fun SettingsScreen(
}
)
- SettingsItem(
+ if (model.databaseBackend != WalletDatabaseBackend.Sqlite) SettingsItem(
title = stringResource(R.string.settings_migrate_db),
summary = stringResource(R.string.settings_migrate_db_summary),
icon = Icons.Default.Memory,