taler-ios

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

commit 9dfd94d15bbe4198abd1b399f5fc4309225550f6
parent 967dd208f39d7b74c409a6589e05e44f93152514
Author: Marc Stibane <marc@taler.net>
Date:   Thu,  8 Aug 2024 06:13:03 +0200

DepositWireTypesForCurrency

Diffstat:
MTalerWallet1/Model/Model+Deposit.swift | 49+++++++++++++++++++++++++++++++++++++++----------
1 file changed, 39 insertions(+), 10 deletions(-)

diff --git a/TalerWallet1/Model/Model+Deposit.swift b/TalerWallet1/Model/Model+Deposit.swift @@ -15,7 +15,7 @@ fileprivate let ASYNCDELAY: UInt = 0 //set e.g to 6 or 9 seconds for debugging struct ValidateIbanResult: Codable { let valid: Bool } -/// A request to get an validate an IBAN. +/// A request to validate an IBAN. fileprivate struct ValidateIban: WalletBackendFormattedRequest { typealias Response = ValidateIbanResult func operation() -> String { "validateIban" } @@ -26,7 +26,45 @@ fileprivate struct ValidateIban: WalletBackendFormattedRequest { var iban: String } } +extension WalletModel { + /// validate IBAN. No Networking + @MainActor // M for MainActor + func validateIbanM(_ iban: String, viewHandles: Bool = false) + async throws -> Bool { + let request = ValidateIban(iban: iban) + let response = try await sendRequest(request, ASYNCDELAY, viewHandles: viewHandles) + return response.valid + } +} +// MARK: - Deposit +struct DepositWireTypesForCurrencyResponse: Codable { + /// can be used to pre-filter payment target types to offer the user as an input option + let wireTypes: [String] +} +/// A request to get wire types that can be used for a deposit operation. +fileprivate struct DepositWireTypesForCurrency: WalletBackendFormattedRequest { + typealias Response = DepositWireTypesForCurrencyResponse + func operation() -> String { "getDepositWireTypesForCurrency" } + func args() -> Args { Args(currency: currency, scopeInfo: scopeInfo) } + + var currency: String + var scopeInfo: ScopeInfo? + struct Args: Encodable { + var currency: String + var scopeInfo: ScopeInfo? + } +} +extension WalletModel { + /// Get wire types that can be used for a deposit operation + @MainActor // M for MainActor + func depositWireTypesForCurrencyM(_ currency: String, scopeInfo: ScopeInfo? = nil, viewHandles: Bool = false) + async throws -> [String] { + let request = DepositWireTypesForCurrency(currency: currency, scopeInfo: scopeInfo) + let response = try await sendRequest(request, ASYNCDELAY, viewHandles: viewHandles) + return response.wireTypes + } +} // MARK: - Deposit struct DepositFees: Codable { let coin: Amount @@ -73,15 +111,6 @@ fileprivate struct CreateDepositGroup: WalletBackendFormattedRequest { } // MARK: - extension WalletModel { - /// validate IBAN. No Networking - @MainActor // M for MainActor - func validateIbanM(_ iban: String, viewHandles: Bool = false) - async throws -> Bool { - let request = ValidateIban(iban: iban) - let response = try await sendRequest(request, ASYNCDELAY, viewHandles: viewHandles) - return response.valid - } - /// check fees for deposit. No Networking @MainActor // M for MainActor func checkDepositM(_ depositPaytoUri: String, amount: Amount, viewHandles: Bool = false)