taler-android

Android apps for GNU Taler (wallet, PoS, cashier)
Log | Files | Refs | README | LICENSE

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:
Mwallet/src/main/java/net/taler/wallet/backend/InitResponse.kt | 21+++++++++++++++------
Mwallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt | 7+++----
Mwallet/src/main/java/net/taler/wallet/main/MainViewModel.kt | 25++++++++++++++-----------
Mwallet/src/main/java/net/taler/wallet/settings/SettingsScreen.kt | 3++-
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,