taler-ios

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

commit 8f93fab7d7ce478354864e4bedb9f84136b67528
parent d13214d3aa4d8969892c24dbc638dc3916ee97d7
Author: Marc Stibane <marc@taler.net>
Date:   Sun, 16 Aug 2026 09:01:21 +0200

AI: don't remember purge

Diffstat:
MTalerWallet1/Views/Settings/Exchange/ExchangeSectionView.swift | 12+++++-------
1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/TalerWallet1/Views/Settings/Exchange/ExchangeSectionView.swift b/TalerWallet1/Views/Settings/Exchange/ExchangeSectionView.swift @@ -32,7 +32,6 @@ struct ExchangeSectionView: View { @State private var didDelete: Bool = false @State private var disabled: Bool = false @State private var showAlert: Bool = false - @State private var purge: Bool = false @State private var global: Bool = false @MainActor @@ -51,14 +50,15 @@ struct ExchangeSectionView: View { currencyInfo = controller.info(for: scopeInfo, controller.currencyTicker) } + /// purge must never be remembered - it deletes the exchange even if it still holds coins, + /// so it may only ever come from the escalated alert (warningText2/3) which says so @MainActor - private func deleteExchange() { + private func deleteExchange(purge: Bool) { disabled = true // don't try this more than once Task { // runs on MainActor if let exchange = exchanges.first { let baseUrl = exchange.exchangeBaseUrl if let _ = try? await model.deleteExchange(url: baseUrl, purge: purge, viewHandles: !purge) { - purge = false symLog.log("deleted \(baseUrl.trimURL)") didDelete = true // change button text NotificationCenter.default.post(name: .ExchangeDeleted, object: nil, userInfo: nil) @@ -66,7 +66,6 @@ struct ExchangeSectionView: View { demoHints = true deleteTask() } else { - purge = true showAlert = true disabled = false } @@ -164,7 +163,7 @@ struct ExchangeSectionView: View { buttonIcon: "trash", role: .destructive, // optional: use WalletColors().errorColor disabled: $disabled, - action: deleteExchange) + action: { deleteExchange(purge: false) }) .padding(.top) .alert(warningText2, isPresented: $showAlert, actions: { Button("Cancel", role: .cancel) { @@ -176,7 +175,7 @@ struct ExchangeSectionView: View { NotificationCenter.default.post(name: .DepositAction, object: nil) // will trigger NavigationLink } Button(buttonTitle) { - deleteExchange() + deleteExchange(purge: true) showAlert = false } }, message: { @@ -191,7 +190,6 @@ struct ExchangeSectionView: View { .task(id: controller.currencyTicker) { await currencyTickerChanged(scopeInfo) } .onDisappear() { disabled = false - purge = false } } }