taler-ios

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

commit f5d91579a485d153f3c717b1a2778448cd25066e
parent d60c6d1c1666cbf7b2cef454f35869c838113890
Author: Marc Stibane <marc@taler.net>
Date:   Mon, 25 Nov 2024 20:49:14 +0100

KnownBankAccounts

Diffstat:
MTalerWallet1/Model/Model+Deposit.swift | 72++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 72 insertions(+), 0 deletions(-)

diff --git a/TalerWallet1/Model/Model+Deposit.swift b/TalerWallet1/Model/Model+Deposit.swift @@ -164,3 +164,75 @@ extension WalletModel { return response } } +// MARK: - +struct KnownBankAccountsInfo: Decodable, Hashable { + var paytoUri: String + var kycCompleted: Bool + var currencies: [String] + var alias: String? +} +struct KnownBankAccounts: Decodable, Hashable { + var accounts: [KnownBankAccountsInfo] +} +/// A request to list know bank accounts. +fileprivate struct ListKnownBankAccounts: WalletBackendFormattedRequest { + typealias Response = KnownBankAccounts + func operation() -> String { "listKnownBankAccounts" } + func args() -> Args { Args(currency: currency) } + var currency: String? + struct Args: Encodable { + var currency: String? + } +} +extension WalletModel { + /// ask for known accounts. No networking + nonisolated func listKnownBankAccounts(_ currency: String? = nil, viewHandles: Bool = false) + async throws -> [KnownBankAccountsInfo] { + let request = ListKnownBankAccounts(currency: currency) + let response = try await sendRequest(request, ASYNCDELAY, viewHandles: viewHandles) + return response.accounts + } +} + +/// A request to add a known bank account. +fileprivate struct AddKnownBankAccount: WalletBackendFormattedRequest { + struct Response: Decodable {} // no result - getting no error back means success + func operation() -> String { "addKnownBankAccount" } + func args() -> Args { Args(paytoUri: uri, alias: alias, replacePaytoUri: replaceUri) } + var uri: String + var alias: String + var replaceUri: String? + struct Args: Encodable { + var paytoUri: String // bank account that should be added + var alias: String // Human-readable alias / label + var currencies: [String]? // currencies supported by the bank (if known) + var replacePaytoUri: String? // account that this new account should replace + } +} +extension WalletModel { + /// add (or update) a known account. No networking + nonisolated func addKnownBankAccount(_ uri: String, alias: String, replaceUri: String? = nil, viewHandles: Bool = false) + async throws { + let request = AddKnownBankAccount(uri: uri, alias: alias, replaceUri: replaceUri) + _ = try await sendRequest(request, ASYNCDELAY, viewHandles: viewHandles) + } +} + +/// A request to forget a known bank account. +fileprivate struct ForgetKnownBankAccount: WalletBackendFormattedRequest { + struct Response: Decodable {} // no result - getting no error back means success + func operation() -> String { "forgetKnownBankAccount" } + func args() -> Args { Args(paytoUri: uri) } + var uri: String + struct Args: Encodable { + var paytoUri: String // bank account that should be forgotten + } +} +extension WalletModel { + /// add a known account. No networking + nonisolated func forgetKnownBankAccount(_ uri: String, viewHandles: Bool = false) + async throws { + let request = ForgetKnownBankAccount(uri: uri) + _ = try await sendRequest(request, ASYNCDELAY, viewHandles: viewHandles) + } +}