diff options
author | Iván Ávalos <avalos@disroot.org> | 2024-04-02 13:15:54 -0600 |
---|---|---|
committer | Torsten Grote <t@grobox.de> | 2024-04-15 15:53:36 -0300 |
commit | 342570cdc9d2f03b2d678ba19c91e7ac16d2fda0 (patch) | |
tree | 1d545e1be44a845de326efbbc627e21bbc779899 /wallet/src | |
parent | a06f8661e2e0293f1796a4c10987b7b3fc8ce301 (diff) | |
download | taler-android-342570cdc9d2f03b2d678ba19c91e7ac16d2fda0.tar.gz taler-android-342570cdc9d2f03b2d678ba19c91e7ac16d2fda0.tar.bz2 taler-android-342570cdc9d2f03b2d678ba19c91e7ac16d2fda0.zip |
[wallet] wallet devMode now syncs to wallet-core
bug 0008697
Diffstat (limited to 'wallet/src')
3 files changed, 44 insertions, 15 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt index 2534120..9f68ad8 100644 --- a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt +++ b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt @@ -41,6 +41,8 @@ import net.taler.wallet.backend.TalerErrorInfo import net.taler.wallet.backend.VersionReceiver import net.taler.wallet.backend.WalletBackendApi import net.taler.wallet.backend.WalletCoreVersion +import net.taler.wallet.backend.WalletRunConfig +import net.taler.wallet.backend.WalletRunConfig.Testing import net.taler.wallet.balances.BalanceManager import net.taler.wallet.balances.ScopeInfo import net.taler.wallet.deposit.DepositManager @@ -70,7 +72,9 @@ class MainViewModel( app: Application, ) : AndroidViewModel(app), VersionReceiver, NotificationReceiver { - val devMode = MutableLiveData(BuildConfig.DEBUG) + private val mDevMode = MutableLiveData(BuildConfig.DEBUG) + val devMode: LiveData<Boolean> = mDevMode + val showProgressBar = MutableLiveData<Boolean>() var walletVersion: String? = null private set @@ -81,7 +85,15 @@ class MainViewModel( var merchantVersion: String? = null private set - private val api = WalletBackendApi(app, this, this) + @set:Synchronized + var walletConfig = WalletRunConfig( + testing = Testing( + emitObservabilityEvents = true, + devModeActive = devMode.value ?: false, + ) + ) + + private val api = WalletBackendApi(app, walletConfig, this, this) val networkManager = NetworkManager(app.applicationContext) val withdrawManager = WithdrawManager(api, viewModelScope) @@ -201,6 +213,22 @@ class MainViewModel( mScanCodeEvent.value = true.toEvent() } + fun setDevMode(enabled: Boolean, onError: (error: TalerErrorInfo) -> Unit) { + mDevMode.postValue(enabled) + viewModelScope.launch { + val config = walletConfig.copy( + testing = walletConfig.testing?.copy( + devModeActive = enabled, + ), + ) + + api.setWalletConfig(config) + .onSuccess { + walletConfig = config + }.onError(onError) + } + } + fun runIntegrationTest() { viewModelScope.launch { api.request<Unit>("runIntegrationTestV2") { @@ -214,13 +242,11 @@ class MainViewModel( } } - fun applyDevExperiment(uri: String, onError: (e: TalerErrorInfo) -> Unit) { + fun applyDevExperiment(uri: String, onError: (error: TalerErrorInfo) -> Unit) { viewModelScope.launch { api.request<Unit>("applyDevExperiment") { put("devExperimentUri", uri) - }.onError { - onError(it) - } + }.onError(onError) } } diff --git a/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt b/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt index 35d4cc0..fba9885 100644 --- a/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt +++ b/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt @@ -29,13 +29,13 @@ import kotlinx.serialization.json.decodeFromJsonElement import net.taler.wallet.backend.TalerErrorCode.NONE import org.json.JSONObject import java.io.File -import net.taler.wallet.backend.WalletRunConfig.* private const val WALLET_DB = "talerwalletdb.sqlite3" @OptIn(DelicateCoroutinesApi::class) class WalletBackendApi( private val app: Application, + private val initialConfig: WalletRunConfig, private val versionReceiver: VersionReceiver, notificationReceiver: NotificationReceiver, ) { @@ -57,16 +57,10 @@ class WalletBackendApi( "${app.filesDir}/${WALLET_DB}" } - val config = WalletRunConfig(testing = Testing( - emitObservabilityEvents = true, - // TODO: enable conditionally and allow runtime toggling - devModeActive = true, - )) - request("init", InitResponse.serializer()) { put("persistentStoragePath", db) put("logLevel", "INFO") - put("config", JSONObject(BackendManager.json.encodeToString(config))) + put("config", JSONObject(BackendManager.json.encodeToString(initialConfig))) }.onSuccess { response -> versionReceiver.onVersionReceived(response.versionInfo) }.onError { error -> @@ -75,6 +69,12 @@ class WalletBackendApi( } } + suspend fun setWalletConfig(config: WalletRunConfig): WalletResponse<InitResponse> { + return request("initWallet", InitResponse.serializer()) { + put("config", JSONObject(BackendManager.json.encodeToString(config))) + } + } + suspend fun sendRequest(operation: String, args: JSONObject? = null): ApiResponse { return backendManager.send(operation, args) } diff --git a/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt b/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt index 0435665..38eeb9b 100644 --- a/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt @@ -33,6 +33,7 @@ import net.taler.wallet.BuildConfig.VERSION_CODE import net.taler.wallet.BuildConfig.VERSION_NAME import net.taler.wallet.MainViewModel import net.taler.wallet.R +import net.taler.wallet.showError import net.taler.wallet.withdraw.WithdrawTestStatus import java.lang.System.currentTimeMillis @@ -108,7 +109,9 @@ class SettingsFragment : PreferenceFragmentCompat() { devPrefs.forEach { it.isVisible = enabled } } prefDevMode.setOnPreferenceChangeListener { _, newValue -> - model.devMode.value = newValue as Boolean + model.setDevMode(newValue as Boolean) { error -> + showError(error) + } true } |