summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Stibane <marc@taler.net>2024-02-04 14:42:46 +0100
committerMarc Stibane <marc@taler.net>2024-02-04 14:42:46 +0100
commit8e1279953d0890c50439d6f2fd28cfea91f025f6 (patch)
tree9809db4d44c2a67007c9110611e035cc788ff865
parentcb8db09e0455dc854bc7c0ff458c00f15386faa8 (diff)
downloadtaler-ios-8e1279953d0890c50439d6f2fd28cfea91f025f6.tar.gz
taler-ios-8e1279953d0890c50439d6f2fd28cfea91f025f6.tar.bz2
taler-ios-8e1279953d0890c50439d6f2fd28cfea91f025f6.zip
devExperiment Refresh
-rw-r--r--TalerWallet1/Model/WalletModel.swift41
-rw-r--r--TalerWallet1/Views/Settings/SettingsView.swift15
2 files changed, 51 insertions, 5 deletions
diff --git a/TalerWallet1/Model/WalletModel.swift b/TalerWallet1/Model/WalletModel.swift
index dadf3fa..86cf4e6 100644
--- 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
index 6484c2e..cb38f38 100644
--- 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"