taler-ios

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

commit c9e8332c3cd0a92610b046f12ca540104dcd28ff
parent 0e471d5b1eb42a97ca1db49db0a2ce1485061992
Author: Marc Stibane <marc@taler.net>
Date:   Thu, 26 Mar 2026 00:43:04 +0100

fix #9671: internal error on first withdraw.

Diffstat:
MTalerWallet1/Quickjs/QuickDataTask.swift | 38++++++++++++++++++++++++++------------
MTalerWallet1/Views/Main/WalletEmptyView.swift | 3+++
2 files changed, 29 insertions(+), 12 deletions(-)

diff --git a/TalerWallet1/Quickjs/QuickDataTask.swift b/TalerWallet1/Quickjs/QuickDataTask.swift @@ -144,18 +144,32 @@ class QuickDataTask: NSObject { Task.detached { self.logger.error("⁉️ \(self.requestID, privacy: .public) \(method, privacy: .public) \(error, privacy: .public)") Controller.shared.checkInternetConnection() - let errmsg = error?.localizedDescription - let errmsg_p0 = if let errmsg { UnsafeMutablePointer<CChar>(mutating: errmsg.cString(using: .utf8)) } - else { UnsafeMutablePointer<CChar>(nil) } - var responseInfo = JSHttpResponseInfo(request_id: self.requestID, - status: 0, - errmsg: errmsg_p0, - response_headers: nil, - num_response_headers: 0, - body: nil, - body_len: 0) - let responseInfoPtr = UnsafeMutablePointer<JSHttpResponseInfo>(&responseInfo) - responseCb(responseCbCls, responseInfoPtr) + if let errmsg = error?.localizedDescription, + let errmsgC = errmsg.cString(using: .utf8) + { + let errmsg_p1 = UnsafeMutablePointer<CChar>(mutating: errmsgC) + var responseInfo = JSHttpResponseInfo(request_id: self.requestID, + status: 0, + errmsg: errmsg_p1, + response_headers: nil, + num_response_headers: 0, + body: nil, + body_len: 0) + let responseInfoPtr = UnsafeMutablePointer<JSHttpResponseInfo>(&responseInfo) + responseCb(responseCbCls, responseInfoPtr) + } else { + // should never happen + let errmsg_p1 = UnsafeMutablePointer<CChar>(nil) + var responseInfo = JSHttpResponseInfo(request_id: self.requestID, + status: 0, + errmsg: errmsg_p1, + response_headers: nil, + num_response_headers: 0, + body: nil, + body_len: 0) + let responseInfoPtr = UnsafeMutablePointer<JSHttpResponseInfo>(&responseInfo) + responseCb(responseCbCls, responseInfoPtr) + } } } requests[requestID] = nil diff --git a/TalerWallet1/Views/Main/WalletEmptyView.swift b/TalerWallet1/Views/Main/WalletEmptyView.swift @@ -115,6 +115,9 @@ struct WalletEmptyView: View { let amount = Amount(currency: DEMOCURRENCY, cent: 2500) symLog.log("Withdraw KUDOS") try? await model.loadTestKudos(0, amount: amount) + DispatchQueue.main.asyncAfter(deadline: .now() + 1) { + withDrawStarted = false + } } } .buttonStyle(TalerButtonStyle(type: .prominent, narrow: false, disabled: withDrawStarted, aligned: .center))