taler-ios

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

commit 390e3d070936a629b7dd41c29522b3fc881785cf
parent 8e4acf1cdf0c7cc7ff29b19edc25fbc49f1c2d3d
Author: Marc Stibane <marc@taler.net>
Date:   Thu, 20 Aug 2026 15:51:02 +0200

Copy payto

Diffstat:
MTalerWallet1/Views/Transactions/KYCauth.swift | 4+++-
MTalerWallet1/Views/Transactions/ManualDetailsV.swift | 2++
MTalerWallet1/Views/Transactions/ManualDetailsWireV.swift | 20+++++++++++++++++++-
3 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/TalerWallet1/Views/Transactions/KYCauth.swift b/TalerWallet1/Views/Transactions/KYCauth.swift @@ -12,6 +12,7 @@ import taler_swift struct KycData { let debitIBAN: String let depositStr: (String, String) + let debitPayto: String } // pretty much the same as ManualDetailsV struct KYCauth: View { @@ -31,7 +32,8 @@ struct KYCauth: View { if let validDetails = accountDetails.validDetails { if let scope: ScopeInfo = common.scopes.first { let depositStr = common.amountRaw.formatted(scope, isNegative: false) - let kycData = KycData(debitIBAN: debitIban, depositStr: depositStr) + let kycData = KycData(debitIBAN: debitIban, depositStr: depositStr, + debitPayto: info.debitPaytoUri) WireTransferView(stack: stack.push(), title: title(depositStr.0), titleA11y: title(depositStr.1), diff --git a/TalerWallet1/Views/Transactions/ManualDetailsV.swift b/TalerWallet1/Views/Transactions/ManualDetailsV.swift @@ -122,6 +122,8 @@ struct WireTransferView: View { let wireDetails = ManualDetailsWireV(stack: stack.push(), reservePub: reservePub, payto: payto, + paytoStr: paytoUri, + kycPaytoStr: kycData?.debitPayto, restrictions: account.creditRestrictions, amountValue: amountValue, amountStr: amountStr, diff --git a/TalerWallet1/Views/Transactions/ManualDetailsWireV.swift b/TalerWallet1/Views/Transactions/ManualDetailsWireV.swift @@ -258,6 +258,8 @@ struct ManualDetailsWireV: View { let stack: CallStack let reservePub: String let payto: PayTo + let paytoStr: String + let kycPaytoStr: String? let restrictions: [AccountRestriction]? // only if restrictions apply // let iban: String? // TODO: BBAN @@ -267,6 +269,9 @@ struct ManualDetailsWireV: View { let debitIBAN: String? // only for deposit auth @AppStorage("minimalistic") var minimalistic: Bool = false + @State var isCopied1: Bool? = false + @State var isCopied2: Bool? = false + let navTitle = String(localized: "Wire transfer", comment: "ViewTitle of wire-transfer instructions") private func step3(_ amountS: String) -> String { @@ -320,7 +325,7 @@ struct ManualDetailsWireV: View { var body: some View { if let receiverStr = payto.receiver { - List { + let list = List { let warningIcon = Image(systemName: WARNING) let note = Text("**Note: Don't forget to copy and paste the code in Step 2.**") let manda = debitIBAN == nil ? String(localized: "This is mandatory, otherwise your money will not arrive in this wallet.") @@ -391,6 +396,19 @@ struct ManualDetailsWireV: View { // symLog.log("onAppear") DebugViewC.shared.setViewID(VIEW_WITHDRAW_INSTRUCTIONS, stack: stack.push()) } + + if #available(iOS 16.0, *) { + list.toolbar { + ToolbarTitleMenu { + CopyButton(paytoStr, isCopied: $isCopied1, title: "Copy destination payto") + if let kycPaytoStr { + CopyButton(kycPaytoStr, isCopied: $isCopied2, title: "Copy validation payto") + } + } + } + } else { + list + } } // if receiverStr } }