gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-taler-ios] 17/24: currency & -Info


From: gnunet
Subject: [taler-taler-ios] 17/24: currency & -Info
Date: Tue, 05 Dec 2023 16:26:13 +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 a881bb8c9af78e3d6fb0644137081b85ee39bf30
Author: Marc Stibane <marc@taler.net>
AuthorDate: Mon Dec 4 09:56:29 2023 +0100

    currency & -Info
---
 TalerWallet1/Views/Exchange/ExchangeRowView.swift  | 101 +++++++++++++--------
 .../Views/Exchange/ExchangeSectionView.swift       |  10 +-
 2 files changed, 66 insertions(+), 45 deletions(-)

diff --git a/TalerWallet1/Views/Exchange/ExchangeRowView.swift 
b/TalerWallet1/Views/Exchange/ExchangeRowView.swift
index b4114cb..9c6cdaf 100644
--- a/TalerWallet1/Views/Exchange/ExchangeRowView.swift
+++ b/TalerWallet1/Views/Exchange/ExchangeRowView.swift
@@ -4,18 +4,23 @@
  */
 import SwiftUI
 import taler_swift
+import SymLog
 
 struct ExchangeRowView: View {
+    private let symLog = SymLogV()
     let stack: CallStack
     let exchange: Exchange
-    let currency: String
-    @Binding var amountToTransfer: Amount
+    let currency: String                        // this is the currency to be 
used
+    @Binding var amountToTransfer: Amount       // does still have the wrong 
currency
 
     @Environment(\.sizeCategory) var sizeCategory
+    @EnvironmentObject private var controller: Controller
+    @EnvironmentObject private var model: WalletModel
     @AppStorage("iconOnly") var iconOnly: Bool = false
     @State private var buttonSelected: Int? = nil
 
     func selectAndUpdate(_ button: Int) {
+        amountToTransfer.setCurrency(currency)
         buttonSelected = button      // will trigger NavigationLink
         // TODO: after user tapped a button, while navigation animation runs, 
contact Exchange to update Fees
         // cannot be uncommented yet since there is no scopeInfo
@@ -29,6 +34,13 @@ struct ExchangeRowView: View {
     }
 
     var body: some View {
+#if DEBUG
+        let _ = Self._printChanges()
+        let _ = symLog.vlog()       // just to get the # to compare it with 
.onAppear & onDisappear
+        let delay: UInt = 0     // set to 5 to test delayed currency 
information
+#else
+        let delay: UInt = 0
+#endif
         let depositTitle0 = String(localized: "DepositButton_Short", 
defaultValue: "Deposit",
                                    comment: "Abbreviation of `Deposit 
(currency)´")
         let depositTitle1 = String(localized: "Deposit\t\(currency)",
@@ -39,50 +51,65 @@ struct ExchangeRowView: View {
         let withdrawTitle1 = String(localized: "Withdraw\t\(currency)",
                                     comment: "Button `Withdraw (currency)´, 
must have ONE \\t and ONE %@")
         let baseURL = exchange.exchangeBaseUrl
-
-        HStack(spacing: 0) {    // can't use the built in Label because it 
adds the accessory arrow
-            Text(baseURL.trimURL())
-                .accessibilityFont(.headline)
-            NavigationLink(destination: LazyView {
-                EmptyView()     // TODO: Deposit
-            }, tag: 1, selection: $buttonSelected
-            ) { EmptyView() }.frame(width: 0).opacity(0)
-            NavigationLink(destination: LazyView {
-                ManualWithdraw(stack: stack.push(),
-//                                 url: nil,
-                            exchange: exchange,
-                    amountToTransfer: $amountToTransfer)
-            }, tag: 2, selection: $buttonSelected
-            ) { EmptyView() }.frame(width: 0).opacity(0)
-        }.listRowSeparator(.hidden)
-        NavigationLink(destination: LazyView {
+        let deposit = LazyView {
+            EmptyView()     // TODO: Deposit
+        }
+        let manualWithdraw = LazyView {
+            ManualWithdraw(stack: stack.push(),
+//                           url: nil,
+                        exchange: exchange,
+                amountToTransfer: $amountToTransfer)
+        }
+        let showToS = LazyView {
             WithdrawTOSView(stack: stack.push(),
-                            exchangeBaseUrl: baseURL,
-                            viewID: VIEW_WITHDRAW_TOS,
-                            acceptAction: nil)         // pop back to here
-        }) {
-            Text("Terms of Service")  // VIEW_WITHDRAW_TOS
-                .accessibilityFont(.body)
-        }.listRowSeparator(.hidden)
-
-        let depositTitle = iconOnly ? depositTitle0 : depositTitle1
-        let withdrawTitle = iconOnly ? withdrawTitle0 : withdrawTitle1
-        let twoRowButtons = TwoRowButtons(sendTitle: depositTitle,
-                                          recvTitle: withdrawTitle,
+                  exchangeBaseUrl: baseURL,
+                           viewID: VIEW_WITHDRAW_TOS,
+                     acceptAction: nil)         // pop back to here
+        }
+        let twoRowButtons = TwoRowButtons(sendTitle: iconOnly ? depositTitle0 
: depositTitle1,
+                                          recvTitle: iconOnly ? withdrawTitle0 
: withdrawTitle1,
                                      fitsSideBySide: false,
                                           lineLimit: 5,
                                        sendDisabled: true,             // 
TODO: availableAmount.isZero
                                          sendAction: { selectAndUpdate(1) },
                                          recvAction: { selectAndUpdate(2) })
-        if #available(iOS 16.0, *) {
-            ViewThatFits(in: .horizontal) {
-                HStack(spacing: HSPACING) {
-                    twoRowButtons.makeCopy(fitsSideBySide: true)
+        Group {
+            HStack(spacing: 0) {    // can't use the built in Label because it 
adds the accessory arrow
+                Text(baseURL.trimURL())
+                    .accessibilityFont(.headline)
+                NavigationLink(destination: deposit, tag: 1, selection: 
$buttonSelected)
+                { EmptyView() }.frame(width: 0).opacity(0)
+                NavigationLink(destination: manualWithdraw, tag: 2, selection: 
$buttonSelected)
+                { EmptyView() }.frame(width: 0).opacity(0)
+            }.listRowSeparator(.hidden)
+            NavigationLink(destination: showToS) {
+                Text("Terms of Service")  // VIEW_WITHDRAW_TOS
+                    .accessibilityFont(.body)
+            }.listRowSeparator(.hidden)
+            if #available(iOS 16.0, *) {
+                ViewThatFits(in: .horizontal) {
+                    HStack(spacing: HSPACING) {
+                        twoRowButtons.makeCopy(fitsSideBySide: true)
+                    }
+                    VStack { twoRowButtons }
                 }
+            } else { // view for iOS 15
                 VStack { twoRowButtons }
             }
-        } else { // view for iOS 15
-            VStack { twoRowButtons }
+        }
+        .task {
+            if !controller.hasInfo(for: currency) {
+                symLog.log("fetching info for \(currency)")
+                // FIXME: remove fake ScopeInfo once the REAL one is in 
exchange.scopeInfo
+                let scopeInfo = exchange.scopeInfo ?? ScopeInfo(type: .global, 
currency: currency)
+                do {
+                    let info = try await model.getCurrencyInfo(scope: 
scopeInfo, delay: delay)
+//                    logger.info("got info: \(scope.currency, privacy: 
.public)")
+                    await controller.setInfo(info)
+                } catch {    // TODO: error handling - couldn't get 
CurrencyInfo
+//                    logger.error("Couldn't get info for: \(scope.currency, 
privacy: .public)\n\(error)")
+                }
+            }
         }
     }
 }
diff --git a/TalerWallet1/Views/Exchange/ExchangeSectionView.swift 
b/TalerWallet1/Views/Exchange/ExchangeSectionView.swift
index 63e1f28..0f48133 100644
--- a/TalerWallet1/Views/Exchange/ExchangeSectionView.swift
+++ b/TalerWallet1/Views/Exchange/ExchangeSectionView.swift
@@ -14,23 +14,17 @@ struct ExchangeSectionView: View {
     let exchanges: [Exchange]
     @Binding var amountToTransfer: Amount       // does still have the wrong 
currency
 
-    func setCurrency() -> String {
-        amountToTransfer.setCurrency(currency)
-        return currency
-    }
-
     var body: some View {
 #if DEBUG
         let _ = Self._printChanges()
 //        let _ = symLog.vlog()       // just to get the # to compare it with 
.onAppear & onDisappear
 #endif
-        let currency2 = setCurrency()           // update currency in 
amountToTransfer
         Section {
             ForEach(exchanges) { exchange in
                 ExchangeRowView(stack: stack.push(),
                              exchange: exchange,
-                             currency: currency2,            // TODO: 
(balance.available) amount.isZero to disable Deposit-button
-                     amountToTransfer: $amountToTransfer)
+                             currency: currency,            // TODO: 
(balance.available) amount.isZero to disable Deposit-button
+                     amountToTransfer: $amountToTransfer)   // does still have 
the wrong currency
             }
         } header: {
             BarGraphHeader(stack: stack.push(), currency: currency)

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]