taler-ios

iOS apps for GNU Taler (wallet)
Log | Files | Refs | README | LICENSE

commit 8e1279953d0890c50439d6f2fd28cfea91f025f6
parent cb8db09e0455dc854bc7c0ff458c00f15386faa8
Author: Marc Stibane <marc@taler.net>
Date:   Sun,  4 Feb 2024 14:42:46 +0100

devExperiment Refresh

Diffstat:
MTalerWallet1/Model/WalletModel.swift | 41++++++++++++++++++++++++++++++++++++-----
MTalerWallet1/Views/Settings/SettingsView.swift | 15+++++++++++++++
2 files changed, 51 insertions(+), 5 deletions(-)

diff --git a/TalerWallet1/Model/WalletModel.swift b/TalerWallet1/Model/WalletModel.swift @@ -91,21 +91,31 @@ struct VersionInfo: Decodable { fileprivate struct InitRequest: WalletBackendFormattedRequest { func operation() -> String { "init" } func args() -> Args { + let testing = Testing(devModeActive: false) // true, false + let config = Config(testing: testing) return Args(persistentStoragePath: persistentStoragePath, // cryptoWorkerType: "sync", - logLevel: "info", // trace, info, warn, error, none + logLevel: "info", // trace, info, warn, error, none + config: config, useNativeLogging: true) } + var persistentStoragePath: String + + struct Testing: Encodable { + var devModeActive: Bool + // more to come... + } + struct Config: Encodable { + var testing: Testing + } struct Args: Encodable { var persistentStoragePath: String // var cryptoWorkerType: String var logLevel: String + var config: Config var useNativeLogging: Bool } - - var persistentStoragePath: String - struct Response: Decodable { var versionInfo: VersionInfo } @@ -158,7 +168,7 @@ extension WalletModel { } } // MARK: - -/// A request to initialize Wallet-core +/// A request to reset Wallet-core to a virgin DB. WILL DESTROY ALL COINS fileprivate struct ResetRequest: WalletBackendFormattedRequest { func operation() -> String { "clearDb" } func args() -> Args { Args() } @@ -176,3 +186,24 @@ extension WalletModel { } } // MARK: - + +fileprivate struct DevExperimentRequest: WalletBackendFormattedRequest { + func operation() -> String { "applyDevExperiment" } + func args() -> Args { Args(devExperimentUri: talerUri) } + + var talerUri: String + + struct Args: Encodable { + var devExperimentUri: String + } + struct Response: Decodable {} +} + +extension WalletModel { + /// tell wallet-core to mock new transactions + func devExperimentT(talerUri: String) async throws { + // T for any Thread + let request = DevExperimentRequest(talerUri: talerUri) + _ = try await sendRequest(request, 0) + } +} diff --git a/TalerWallet1/Views/Settings/SettingsView.swift b/TalerWallet1/Views/Settings/SettingsView.swift @@ -184,6 +184,21 @@ struct SettingsView: View { walletCore.developDelay = delay}), id1: "delay", description: hideDescriptions ? nil : String("After each wallet-core action")) .id("delay") + SettingsItem(name: String("Run Dev Experiment"), id1: "applyDevExperiment", + description: hideDescriptions ? nil : "dev-experiment/insert-pending-refresh") { + let title = "Refresh" + Button(title) { + Task { // runs on MainActor + symLog.log("running applyDevExperiment Refresh") + do { + try await model.devExperimentT(talerUri: "taler://dev-experiment/insert-pending-refresh") + } catch { // TODO: show error + symLog.log(error.localizedDescription) + } + } + } + .buttonStyle(.bordered) + }.id("Refresh") SettingsItem(name: String("Run Integration Test"), id1: "demo1test", description: hideDescriptions ? nil : String("Perform basic test transactions")) { let title = "Demo 1"