[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-ios] 03/06: templateParams
From: |
gnunet |
Subject: |
[taler-taler-ios] 03/06: templateParams |
Date: |
Tue, 20 Feb 2024 19:19:46 +0100 |
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 b8635ef50af639db230a8323712a2d2022ccda13
Author: Marc Stibane <marc@taler.net>
AuthorDate: Mon Feb 19 12:44:31 2024 +0100
templateParams
---
TalerWallet1/Model/Model+Payment.swift | 14 +++++--
.../Views/Sheets/Payment/PayTemplateView.swift | 48 ++++++++++++++--------
2 files changed, 42 insertions(+), 20 deletions(-)
diff --git a/TalerWallet1/Model/Model+Payment.swift
b/TalerWallet1/Model/Model+Payment.swift
index b211c51..970ee7b 100644
--- a/TalerWallet1/Model/Model+Payment.swift
+++ b/TalerWallet1/Model/Model+Payment.swift
@@ -147,15 +147,22 @@ fileprivate struct PreparePayForUri:
WalletBackendFormattedRequest {
var talerPayUri: String
}
}
+
+struct TemplateParams: Codable {
+ let amount: Amount? // Total amount payable
+ let summary: String? // Human-readable short summary of
the contract
+}
/// A request to get an exchange's payment contract terms.
fileprivate struct PreparePayForTemplate: WalletBackendFormattedRequest {
typealias Response = PreparePayResult
func operation() -> String { "preparePayForTemplate" }
- func args() -> Args { Args(talerPayTemplateUri: talerPayTemplateUri) }
+ func args() -> Args { Args(talerPayTemplateUri: talerPayTemplateUri,
templateParams: templateParams) }
var talerPayTemplateUri: String
+ var templateParams: TemplateParams
struct Args: Encodable {
var talerPayTemplateUri: String
+ var templateParams: TemplateParams
}
}
// MARK: -
@@ -187,9 +194,10 @@ extension WalletModel {
return response
}
@MainActor
- func preparePayForTemplateM(_ talerPayTemplateUri: String) // M for
MainActor
+ func preparePayForTemplateM(_ talerPayTemplateUri: String, amount:
Amount?, summary: String?) // M for MainActor
async throws -> PreparePayResult {
- let request = PreparePayForTemplate(talerPayTemplateUri:
talerPayTemplateUri)
+ let templateParams = TemplateParams(amount: amount, summary: summary)
+ let request = PreparePayForTemplate(talerPayTemplateUri:
talerPayTemplateUri, templateParams: templateParams)
let response = try await sendRequest(request, ASYNCDELAY)
return response
}
diff --git a/TalerWallet1/Views/Sheets/Payment/PayTemplateView.swift
b/TalerWallet1/Views/Sheets/Payment/PayTemplateView.swift
index 81c81f2..9d4f37f 100644
--- a/TalerWallet1/Views/Sheets/Payment/PayTemplateView.swift
+++ b/TalerWallet1/Views/Sheets/Payment/PayTemplateView.swift
@@ -20,11 +20,15 @@ struct PayTemplateView: View {
@EnvironmentObject private var model: WalletModel
@AppStorage("myListStyle") var myListStyle: MyListStyle = .automatic
+ @State private var preparePayResult: PreparePayResult? = nil
+ @State private var amount: Amount? = nil // templateParam
+ @State private var summary: String? = nil // templateParam
+
func acceptAction(preparePayResult: PreparePayResult) {
Task { // runs on MainActor
do {
let confirmPayResult = try await
model.confirmPayM(preparePayResult.transactionId)
- // symLog.log(confirmPayResult as Any)
+// symLog.log(confirmPayResult as Any)
if confirmPayResult.type != "done" {
controller.playSound(0)
// TODO: show error
@@ -38,16 +42,30 @@ struct PayTemplateView: View {
}
}
- @State var preparePayResult: PreparePayResult? = nil
+ func queryURL() -> Bool {
+ if let queryParameters = url.queryParameters {
+ if let amountStr = queryParameters["amount"] {
+ amount = Amount.zero(currency: amountStr)
+ }
+ if let summaryStr = queryParameters["summary"] {
+ summary = summaryStr
+ }
+ return true
+ }
+ return false
+ }
- func query(url: URL) -> String? {
- if let query = url.query {
- let array = query.components(separatedBy: "&")
+ func preparePayForTemplate() async {
+ do {
+ let result = try await
model.preparePayForTemplateM(url.absoluteString, amount: amount, summary:
summary)
+ preparePayResult = result
+ } catch { // TODO: error
+ symLog.log(error.localizedDescription)
}
- return nil
}
var body: some View {
+ Group {
if let preparePayResult {
let effective = preparePayResult.amountEffective
List {
@@ -106,21 +124,17 @@ struct PayTemplateView: View {
}
}
.navigationTitle(navTitle)
- .onAppear() {
- symLog.log("onAppear")
- DebugViewC.shared.setSheetID(SHEET_PAY_TEMPLATE)
- }
} else {
LoadingView(url: url, message: nil)
.task {
- do {
- symLog.log(".task")
- let result = try await
model.preparePayForTemplateM(url.absoluteString)
- preparePayResult = result
- } catch { // TODO: error
- symLog.log(error.localizedDescription)
- }
+ symLog.log(".task")
+ let hasParams = queryURL()
+ await preparePayForTemplate()
}
}
+ }.onAppear() {
+ symLog.log("onAppear")
+ DebugViewC.shared.setSheetID(SHEET_PAY_TEMPLATE)
+ }
}
}
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-taler-ios] branch master updated (5459aa4 -> 8475ec0), gnunet, 2024/02/20
- [taler-taler-ios] 03/06: templateParams,
gnunet <=
- [taler-taler-ios] 04/06: Pay-Template, gnunet, 2024/02/20
- [taler-taler-ios] 05/06: Use AmountInputV, gnunet, 2024/02/20
- [taler-taler-ios] 02/06: Bump version to 0.9.4 (6), gnunet, 2024/02/20
- [taler-taler-ios] 06/06: Bump version to 0.9.4 (7), gnunet, 2024/02/20
- [taler-taler-ios] 01/06: Debugging, gnunet, 2024/02/20