gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-taler-ios] 04/35: Settings: Reset wallet


From: gnunet
Subject: [taler-taler-ios] 04/35: Settings: Reset wallet
Date: Thu, 27 Jul 2023 09:09:37 +0200

This is an automated email from the git hooks/post-receive script.

marc-stibane pushed a commit to branch master
in repository taler-ios.

commit d8b2c28f8ea39ecbfc4c5582206af40670c5aa33
Author: Marc Stibane <marc@taler.net>
AuthorDate: Mon Jul 10 13:25:44 2023 +0200

    Settings: Reset wallet
---
 TalerWallet1/Model/WalletModel.swift           | 20 +++++++-
 TalerWallet1/Views/Settings/SettingsView.swift | 69 +++++++++++++++++++-------
 2 files changed, 69 insertions(+), 20 deletions(-)

diff --git a/TalerWallet1/Model/WalletModel.swift 
b/TalerWallet1/Model/WalletModel.swift
index 1b56aa2..1de0aff 100644
--- a/TalerWallet1/Model/WalletModel.swift
+++ b/TalerWallet1/Model/WalletModel.swift
@@ -98,7 +98,7 @@ fileprivate struct InitRequest: WalletBackendFormattedRequest 
{
         var versionInfo: VersionInfo
     }
 }
-// MARK: -
+
 extension WalletModel {
     /// initalize Wallet-Core. Will do networking
     func initWalletCoreT() async throws -> VersionInfo {
@@ -124,3 +124,21 @@ extension WalletModel {
         }
     }
 }
+// MARK: -
+///  A request to initialize Wallet-core
+fileprivate struct ResetRequest: WalletBackendFormattedRequest {
+    func operation() -> String { return "reset" }
+    func args() -> Args { return Args() }
+
+    struct Args: Encodable {}                           // no arguments needed
+    struct Response: Decodable {}
+}
+
+extension WalletModel {
+    /// reset Wallet-Core
+    func resetWalletCoreT() async throws {
+        // T for any Thread
+        let request = ResetRequest()
+        _ = try await sendRequest(request, 0)
+    }
+}
diff --git a/TalerWallet1/Views/Settings/SettingsView.swift 
b/TalerWallet1/Views/Settings/SettingsView.swift
index 8792071..92b800b 100644
--- a/TalerWallet1/Views/Settings/SettingsView.swift
+++ b/TalerWallet1/Views/Settings/SettingsView.swift
@@ -42,6 +42,28 @@ struct SettingsView: View {
     @State private var diagnosticModeEnabled = 
UserDefaults.standard.bool(forKey: "diagnostic_mode_enabled")
 #endif
     @State private var showDevelopItems = false
+    @State private var showResetAlert: Bool = false
+    @State private var didReset: Bool = false
+
+    private var dismissAlertButton: some View {
+        Button("Cancel", role: .cancel) {
+            showResetAlert = false
+        }
+    }
+    private var resetButton: some View {
+        Button("Reset", role: .destructive) {
+            didReset = true
+            showResetAlert = false
+            Task {
+                symLog.log("❗️Reset wallet-core❗️")
+                do {
+                    try await model.resetWalletCoreT()
+                } catch {    // TODO: show error
+                    symLog.log(error.localizedDescription)
+                }
+            }
+        }
+    }
 
     var body: some View {
 #if DEBUG
@@ -69,7 +91,7 @@ struct SettingsView: View {
                 }
                 if diagnosticModeEnabled {
                     SettingsToggle(name: String(localized: "Developer Mode"), 
value: $developerMode,
-                                   description: String(localized: "More 
information intended for debugging")) {
+                            description: String(localized: "More information 
intended for debugging")) {
                         DebugViewC.shared.setViewID(VIEW_SETTINGS)
                         withAnimation { showDevelopItems = developerMode }
                     }
@@ -77,15 +99,17 @@ struct SettingsView: View {
                         NavigationLink {        // whole row like in a 
tableView
                             LazyView { PendingOpsListView() }
                         } label: {
-                            SettingsItem(name: String(localized: "Pending 
Operations"), description: String(localized: "Exchange not yet ready...")) {}
+                            SettingsItem(name: String(localized: "Pending 
Operations"),
+                                  description: String(localized: "Exchange not 
yet ready...")) {}
                         }
                         SettingsToggle(name: String(localized: "Set 2 seconds 
delay"), value: $developDelay,
-                                       description: String(localized: "After 
each wallet-core action"))
+                                description: String(localized: "After each 
wallet-core action"))
                         .onChange(of: developDelay, perform: { developDelay in
                             walletCore.developDelay = developDelay
                         })
 
-                        SettingsItem(name: String(localized: "Withdraw 
\(DEMOCURRENCY)"), description: String(localized: "Get money for testing")) {
+                        SettingsItem(name: String(localized: "Withdraw 
\(DEMOCURRENCY)"),
+                              description: String(localized: "Get money for 
testing")) {
                             Button("Withdraw") {
                                 withDrawDisabled = true    // don't run twice
                                 Task {
@@ -100,7 +124,8 @@ struct SettingsView: View {
                             .buttonStyle(.bordered)
                             .disabled(withDrawDisabled)
                         }
-                        SettingsItem(name: String(localized: "Withdraw 
\(TESTCURRENCY)"), description: String(localized: "Get money for testing")) {
+                        SettingsItem(name: String(localized: "Withdraw 
\(TESTCURRENCY)"),
+                              description: String(localized: "Get money for 
testing")) {
                             Button("Withdraw") {
                                 withDrawDisabled = true    // don't run twice
                                 Task {
@@ -116,7 +141,7 @@ struct SettingsView: View {
                             .disabled(withDrawDisabled)
                         }
                         SettingsItem(name: String(localized: "Run Integration 
Test"),
-                                     description: String(localized: "Perform 
basic test transactions")) {
+                              description: String(localized: "Perform basic 
test transactions")) {
                             Button("Demo 1") {
                                 checkDisabled = true    // don't run twice
                                 Task {
@@ -132,23 +157,15 @@ struct SettingsView: View {
                             .disabled(checkDisabled)
                         }
                         SettingsItem(name: String(localized: "Run Integration 
Test"),
-                                     description: String(localized: "Perform 
basic test transactions")) {
+                              description: String(localized: "Perform basic 
test transactions")) {
                             Button("Test 1") {
                                 checkDisabled = true    // don't run twice
-                                Task {
-                                    symLog.log("running integration test on 
test")
-                                    do {
-                                        try await 
model.runIntegrationTestM(newVersion: false, test: true)
-                                    } catch {    // TODO: show error
-                                        symLog.log(error.localizedDescription)
-                                    }
-                                }
                             }
                             .buttonStyle(.bordered)
                             .disabled(checkDisabled)
                         }
                         SettingsItem(name: String(localized: "Run Integration 
Test V2"),
-                                     description: String(localized: "Perform 
more test transactions")) {
+                              description: String(localized: "Perform more 
test transactions")) {
                             Button("Demo 2") {
                                 checkDisabled = true    // don't run twice
                                 Task {
@@ -164,7 +181,7 @@ struct SettingsView: View {
                             .disabled(checkDisabled)
                         }
                         SettingsItem(name: String(localized: "Run Integration 
Test V2"),
-                                     description: String(localized: "Perform 
more test transactions")) {
+                              description: String(localized: "Perform more 
test transactions")) {
                             Button("Test 2") {
                                 checkDisabled = true    // don't run twice
                                 Task {
@@ -180,7 +197,7 @@ struct SettingsView: View {
                             .disabled(checkDisabled)
                         }
                         SettingsItem(name: String(localized: "Save Logfile"),
-                                     description: String(localized: "Help 
debugging wallet-core")) {
+                              description: String(localized: "Help debugging 
wallet-core")) {
                             Button("Save") {
                                 symLog.log("Saving Log")
                                 // FIXME: Save Logfile
@@ -188,6 +205,14 @@ struct SettingsView: View {
                             .buttonStyle(.bordered)
                             .disabled(true)
                         }
+                        SettingsItem(name: String(localized: "Reset Wallet"),
+                              description: String(localized: "Throw away all 
your coins")) {
+                            Button("Reset") {
+                                showResetAlert = true
+                            }
+                            .buttonStyle(.bordered)
+                            .disabled(didReset)
+                        }
                     }
                 }
 
@@ -210,7 +235,7 @@ struct SettingsView: View {
                     SettingsItem(name: "Used Bank") {
                         Text(verbatim: "\(walletCore.versionInfo!.bank)")
                     }
-                }
+                } // App version info
             }
             .listStyle(myListStyle.style).anyView
         }
@@ -220,6 +245,12 @@ struct SettingsView: View {
             showDevelopItems = developerMode
             DebugViewC.shared.setViewID(VIEW_SETTINGS)
         }
+        .alert("Reset Wallet",
+               isPresented: $showResetAlert,
+               actions: { dismissAlertButton
+                          resetButton },
+               message: {   Text("Are you sure you want to throw away all your 
coins?\nThis cannot be reverted, all money will be gone.") })
+
 #if !DEBUG
         .onReceive(
             NotificationCenter.default

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]