summaryrefslogtreecommitdiff
path: root/wallet/src
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2024-04-02 13:15:54 -0600
committerTorsten Grote <t@grobox.de>2024-04-15 15:53:36 -0300
commit342570cdc9d2f03b2d678ba19c91e7ac16d2fda0 (patch)
tree1d545e1be44a845de326efbbc627e21bbc779899 /wallet/src
parenta06f8661e2e0293f1796a4c10987b7b3fc8ce301 (diff)
downloadtaler-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')
-rw-r--r--wallet/src/main/java/net/taler/wallet/MainViewModel.kt38
-rw-r--r--wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt16
-rw-r--r--wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt5
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
}