[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-ios] 03/11: prepare DepositWithdrawV
From: |
gnunet |
Subject: |
[taler-taler-ios] 03/11: prepare DepositWithdrawV |
Date: |
Fri, 05 Apr 2024 22:56:04 +0200 |
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 6dd8c3b196206bcf00d425e9bf518d2e599ce69d
Author: Marc Stibane <marc@taler.net>
AuthorDate: Fri Apr 5 21:42:54 2024 +0200
prepare DepositWithdrawV
---
TalerWallet.xcodeproj/project.pbxproj | 6 ++
TalerWallet1/Views/Banking/DepositWithdrawV.swift | 92 +++++++++++++++++++++++
2 files changed, 98 insertions(+)
diff --git a/TalerWallet.xcodeproj/project.pbxproj
b/TalerWallet.xcodeproj/project.pbxproj
index 7b0aa13..9e801c2 100644
--- a/TalerWallet.xcodeproj/project.pbxproj
+++ b/TalerWallet.xcodeproj/project.pbxproj
@@ -177,6 +177,8 @@
4E983C2C2ADC416800FA9CC5 /* View+fitsSideBySide.swift in
Sources */ = {isa = PBXBuildFile; fileRef = 4E983C2B2ADC416800FA9CC5 /*
View+fitsSideBySide.swift */; };
4E983C2D2ADC416800FA9CC5 /* View+fitsSideBySide.swift in
Sources */ = {isa = PBXBuildFile; fileRef = 4E983C2B2ADC416800FA9CC5 /*
View+fitsSideBySide.swift */; };
4EA076B12BBEED7E00685A10 /* LocalConsole in Frameworks */ =
{isa = PBXBuildFile; productRef = 4EA076B02BBEED7E00685A10 /* LocalConsole */;
};
+ 4EA076B32BC0607400685A10 /* DepositWithdrawV.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EA076B22BC0607400685A10 /*
DepositWithdrawV.swift */; };
+ 4EA076B42BC0607400685A10 /* DepositWithdrawV.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EA076B22BC0607400685A10 /*
DepositWithdrawV.swift */; };
4EA1ABBE29A3833A008821EA /* PublicConstants.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EA1ABBD29A3833A008821EA /*
PublicConstants.swift */; };
4EA551252A2C923600FEC9A8 /* CurrencyInputView.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EA551242A2C923600FEC9A8 /*
CurrencyInputView.swift */; };
4EAD117629F672FA008EDD0B /* KeyboardResponder.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EAD117529F672FA008EDD0B /*
KeyboardResponder.swift */; };
@@ -373,6 +375,7 @@
4E97968F2A3765ED006F73BC /* AgePicker.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= AgePicker.swift; sourceTree = "<group>"; };
4E983C282ADBDD3500FA9CC5 /* SingleAxisGeometryReader.swift */ =
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType =
sourcecode.swift; path = SingleAxisGeometryReader.swift; sourceTree =
"<group>"; };
4E983C2B2ADC416800FA9CC5 /* View+fitsSideBySide.swift */ = {isa
= PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift;
path = "View+fitsSideBySide.swift"; sourceTree = "<group>"; };
+ 4EA076B22BC0607400685A10 /* DepositWithdrawV.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= DepositWithdrawV.swift; sourceTree = "<group>"; };
4EA1ABBD29A3833A008821EA /* PublicConstants.swift */ = {isa =
PBXFileReference; lastKnownFileType = sourcecode.swift; path =
PublicConstants.swift; sourceTree = "<group>"; };
4EA551242A2C923600FEC9A8 /* CurrencyInputView.swift */ = {isa =
PBXFileReference; lastKnownFileType = sourcecode.swift; path =
CurrencyInputView.swift; sourceTree = "<group>"; };
4EAD117529F672FA008EDD0B /* KeyboardResponder.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= KeyboardResponder.swift; sourceTree = "<group>"; };
@@ -710,6 +713,7 @@
4EB095292989CBFE0043A8A1 /*
ExchangeListView.swift */,
4EC90C772A1B528B0071DC58 /*
ExchangeSectionView.swift */,
4EC4008E2AE8019700DF72C7 /*
ExchangeRowView.swift */,
+ 4EA076B22BC0607400685A10 /*
DepositWithdrawV.swift */,
4EBC0F002B7B3CD600C0CB19 /* DepositIbanV.swift
*/,
4E96583B2B79656E00404A68 /*
DepositAmountV.swift */,
4E50B34F2A1BEE8000F9F01C /*
ManualWithdraw.swift */,
@@ -1192,6 +1196,7 @@
4E3EAE6C2A990778009F1BE8 /*
ExchangeSectionView.swift in Sources */,
4E3EAE6D2A990778009F1BE8 /* P2PSubjectV.swift
in Sources */,
4E6EF56B2B65A33300AF252A /* PaymentDone.swift
in Sources */,
+ 4EA076B32BC0607400685A10 /*
DepositWithdrawV.swift in Sources */,
4E3EAE6E2A990778009F1BE8 /* Model+P2P.swift in
Sources */,
4E3EAE6F2A990778009F1BE8 /* TalerStrings.swift
in Sources */,
4E3EAE702A990778009F1BE8 /*
CurrencyInputView.swift in Sources */,
@@ -1308,6 +1313,7 @@
4EC90C782A1B528B0071DC58 /*
ExchangeSectionView.swift in Sources */,
4E7940DE29FC307C00A9AEA1 /* P2PSubjectV.swift
in Sources */,
4E6EF56C2B65A33300AF252A /* PaymentDone.swift
in Sources */,
+ 4EA076B42BC0607400685A10 /*
DepositWithdrawV.swift in Sources */,
4ECB62802A0BA6DF004ABBB7 /* Model+P2P.swift in
Sources */,
4EB0950A2989CB7C0043A8A1 /* TalerStrings.swift
in Sources */,
4EA551252A2C923600FEC9A8 /*
CurrencyInputView.swift in Sources */,
diff --git a/TalerWallet1/Views/Banking/DepositWithdrawV.swift
b/TalerWallet1/Views/Banking/DepositWithdrawV.swift
new file mode 100644
index 0000000..6bff91d
--- /dev/null
+++ b/TalerWallet1/Views/Banking/DepositWithdrawV.swift
@@ -0,0 +1,92 @@
+/*
+ * This file is part of GNU Taler, ©2022-24 Taler Systems S.A.
+ * See LICENSE.md
+ */
+/**
+ * @author Marc Stibane
+ */
+import SwiftUI
+import taler_swift
+import SymLog
+
+struct DepositWithdrawV: View {
+ private let symLog = SymLogV(0)
+ let stack: CallStack
+ let scopeInfo: ScopeInfo
+ let amountAvailable: Amount?
+ let currency: String // this is the currency to be
used
+ @Binding var amountToTransfer: Amount // does still have the wrong
currency
+
+ @EnvironmentObject private var model: WalletModel
+ @AppStorage("minimalistic") var minimalistic: Bool = false
+ @State private var buttonSelected: Int? = nil
+ @State private var myExchange: Exchange? = nil
+
+ func selectAndUpdate(_ button: Int) {
+ amountToTransfer.setCurrency(currency)
+ buttonSelected = button // will trigger NavigationLink
+ // after user tapped a button, while navigation animation runs,
contact Exchange to update Fees
+ Task { // runs on MainActor
+ do {
+ try await model.updateExchange(scopeInfo: scopeInfo)
+ } catch { // TODO: error handling - couldn't updateExchange
+ symLog.log("error: \(error)")
+ }
+ }
+ }
+
+ var body: some View {
+ let depositTitle0 = String(localized: "DepositButton_Short",
defaultValue: "Deposit",
+ comment: "Abbreviation of `Deposit
(currency)´")
+ let depositTitle1 = String(localized: "Deposit\t\(currency)",
+ comment: "Button `Deposit (currency)´,
must have ONE \\t and ONE %@")
+
+ let withdrawTitle0 = String(localized: "WithdrawButton_Short",
defaultValue: "Withdraw",
+ comment: "Abbreviation of `Withdraw
(currency)´")
+ let withdrawTitle1 = String(localized: "Withdraw\t\(currency)",
+ comment: "Button `Withdraw (currency)´,
must have ONE \\t and ONE %@")
+ let deposit = LazyView {
+ DepositIbanV(stack: stack.push(),
+ feeLabel: nil,
+ feeIsNotZero: nil,
+ amountAvailable: amountAvailable,
+// depositIBAN: $depositIBAN,
+// accountHolder: $accountHolder,
+ amountToTransfer: $amountToTransfer)
+ }
+ let manualWithdraw = LazyView {
+ ManualWithdraw(stack: stack.push(),
+ isSheet: false,
+ scopeInfo: scopeInfo,
+ exchange: $myExchange,
+ amountToTransfer: $amountToTransfer)
+ }
+ let disableDeposit = amountAvailable?.isZero ?? false
+ let twoRowButtons = TwoRowButtons(stack: stack.push(),
+ sendTitle: minimalistic ? depositTitle0
: depositTitle1,
+ recvTitle: minimalistic ? withdrawTitle0
: withdrawTitle1,
+ fitsSideBySide: false,
+ lineLimit: 5,
+ sendDisabled: disableDeposit,
+ sendAction: { selectAndUpdate(1) },
+ recvAction: { selectAndUpdate(2) })
+ Group {
+ if #available(iOS 16.0, *) {
+ ViewThatFits(in: .horizontal) {
+ HStack(spacing: HSPACING) {
+ twoRowButtons.makeCopy(fitsSideBySide: true)
+ }
+ VStack { twoRowButtons }
+ }
+ } else { // view for iOS 15
+ VStack { twoRowButtons }
+ }
+ }
+ .background( Group {
+ NavigationLink(destination: deposit, tag: 1, selection:
$buttonSelected)
+ { EmptyView() }.frame(width: 0).opacity(0).hidden()
+ NavigationLink(destination: manualWithdraw, tag: 2, selection:
$buttonSelected)
+ { EmptyView() }.frame(width: 0).opacity(0).hidden()
+ })
+ }
+}
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-taler-ios] branch master updated (25d37c2 -> 0e970ad), gnunet, 2024/04/05
- [taler-taler-ios] 01/11: setConfig(devModeActive), gnunet, 2024/04/05
- [taler-taler-ios] 05/11: fix fatal error: Duplicate keys of type were found in a Dictionary, gnunet, 2024/04/05
- [taler-taler-ios] 02/11: terms-exchange prep, gnunet, 2024/04/05
- [taler-taler-ios] 03/11: prepare DepositWithdrawV,
gnunet <=
- [taler-taler-ios] 04/11: flags, includeRefreshes, make error parts optional, gnunet, 2024/04/05
- [taler-taler-ios] 06/11: Remove Banking tab, gnunet, 2024/04/05
- [taler-taler-ios] 07/11: Settings: add Payment Services, gnunet, 2024/04/05
- [taler-taler-ios] 09/11: add DepositWithdrawV to Balances, gnunet, 2024/04/05
- [taler-taler-ios] 10/11: use DepositWithdrawV in Exchanges, gnunet, 2024/04/05
- [taler-taler-ios] 08/11: ScopeInfo, gnunet, 2024/04/05
- [taler-taler-ios] 11/11: dev-experiment/start-block-refresh, gnunet, 2024/04/05