commit e306950a195eaa278a43f03c7f0ca3f890c329d3
parent c4533fd6de6d7edf03163f58f5d55207b0aeb4d8
Author: Marc Stibane <marc@taler.net>
Date: Thu, 7 Dec 2023 00:11:42 +0100
getExchangeByUrl
Diffstat:
3 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/TalerWallet1/Model/Model+Exchange.swift b/TalerWallet1/Model/Model+Exchange.swift
@@ -93,6 +93,19 @@ fileprivate struct ListExchanges: WalletBackendFormattedRequest {
}
}
+/// A request to get info for one exchange.
+fileprivate struct GetExchangeByUrl: WalletBackendFormattedRequest {
+ typealias Response = Exchange
+ func operation() -> String { "getExchangeEntryByUrl" }
+ func args() -> Args { Args(exchangeBaseUrl: exchangeBaseUrl) }
+
+ var exchangeBaseUrl: String
+
+ struct Args: Encodable {
+ var exchangeBaseUrl: String
+ }
+}
+
/// A request to update a single exchange.
fileprivate struct UpdateExchange: WalletBackendFormattedRequest {
struct Response: Decodable {} // no result - getting no error back means success
@@ -158,8 +171,21 @@ extension WalletModel {
}
/// add a new exchange with URL to the wallet's list of known exchanges
+ func getExchangeByUrl(url: String)
+ async -> Exchange? {
+ do {
+ let request = GetExchangeByUrl(exchangeBaseUrl: url)
+ logger.info("query for exchange: \(url, privacy: .public)")
+ let response = try await sendRequest(request)
+ return response
+ } catch {
+ return nil
+ }
+ }
+
+ /// add a new exchange with URL to the wallet's list of known exchanges
func addExchange(url: String)
- async throws {
+ async throws {
let request = AddExchange(exchangeBaseUrl: url)
logger.info("adding exchange: \(url, privacy: .public)")
_ = try await sendRequest(request)
diff --git a/TalerWallet1/Model/Model+P2P.swift b/TalerWallet1/Model/Model+P2P.swift
@@ -165,6 +165,8 @@ struct PreparePeerPushCreditResponse: Codable {
let contractTerms: PeerContractTerms
let amountRaw: Amount
let amountEffective: Amount
+ let exchangeBaseUrl: String
+// let peerPushCreditId: String
// the dialog transaction is already created in the local DB - must either accept or delete
let transactionId: String
}
diff --git a/TalerWallet1/Model/Model+Withdraw.swift b/TalerWallet1/Model/Model+Withdraw.swift
@@ -18,8 +18,10 @@ struct AccountRestriction: Decodable {
var human_hint_i18n: String?
}
struct WithdrawalExchangeAccountDetails: Decodable {
+ var bankName: String?
var paytoUri: String
var transferAmount: Amount
+ var currencySpecification: CurrencySpecification?
var creditRestrictions: [AccountRestriction]?
}
// MARK: -