[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.
- [taler-taler-ios] 01/35: Test notes, (continued)
- [taler-taler-ios] 01/35: Test notes, gnunet, 2023/07/27
- [taler-taler-ios] 03/35: logging, gnunet, 2023/07/27
- [taler-taler-ios] 05/35: insufficientBalance, gnunet, 2023/07/27
- [taler-taler-ios] 02/35: navigationBarTitleDisplayMode, gnunet, 2023/07/27
- [taler-taler-ios] 06/35: no need to call urlCommand async, gnunet, 2023/07/27
- [taler-taler-ios] 10/35: Atkinson Hyperlegible, gnunet, 2023/07/27
- [taler-taler-ios] 09/35: localizations, wording, gnunet, 2023/07/27
- [taler-taler-ios] 08/35: iOS 15: show ToS, gnunet, 2023/07/27
- [taler-taler-ios] 11/35: monospacedDigit, gnunet, 2023/07/27
- [taler-taler-ios] 07/35: iOS: bump version to 0.9.3 (15), gnunet, 2023/07/27
- [taler-taler-ios] 04/35: Settings: Reset wallet,
gnunet <=
- [taler-taler-ios] 18/35: Expiration Constants, gnunet, 2023/07/27
- [taler-taler-ios] 19/35: Move Status to top, gnunet, 2023/07/27
- [taler-taler-ios] 25/35: Simplified, gnunet, 2023/07/27
- [taler-taler-ios] 12/35: PayTo URL listRowSeparator, gnunet, 2023/07/27
- [taler-taler-ios] 14/35: Sound for Expired, gnunet, 2023/07/27
- [taler-taler-ios] 27/35: Postpone update until onAppear, gnunet, 2023/07/27
- [taler-taler-ios] 31/35: Expired, pending, gnunet, 2023/07/27
- [taler-taler-ios] 35/35: iOS: bump version to 0.9.3 (16), gnunet, 2023/07/27
- [taler-taler-ios] 22/35: extension TransactionsListView.Content => TransactionsRowsView, gnunet, 2023/07/27
- [taler-taler-ios] 21/35: fanblades.slash and clock.badge.xmark not in iOS 15, gnunet, 2023/07/27