gnunet-svn
[Top][All Lists]
Advanced

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

[taler-taler-ios] 14/30: needsKYC badge


From: gnunet
Subject: [taler-taler-ios] 14/30: needsKYC badge
Date: Sun, 19 Nov 2023 23:53:38 +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 f7750a60188e34ddedcae0cf763a926d913afba0
Author: Marc Stibane <marc@taler.net>
AuthorDate: Sat Nov 18 17:02:26 2023 +0100

    needsKYC badge
---
 .../Views/Balances/BalancesSectionView.swift       |  4 +-
 TalerWallet1/Views/Balances/PendingRowView.swift   | 58 ++++++++++++++--------
 TalerWallet1/Views/Balances/TwoRowButtons.swift    | 17 ++++---
 .../Views/Transactions/TransactionRowView.swift    | 25 ++++++++--
 4 files changed, 71 insertions(+), 33 deletions(-)

diff --git a/TalerWallet1/Views/Balances/BalancesSectionView.swift 
b/TalerWallet1/Views/Balances/BalancesSectionView.swift
index 40feeff..e7c390e 100644
--- a/TalerWallet1/Views/Balances/BalancesSectionView.swift
+++ b/TalerWallet1/Views/Balances/BalancesSectionView.swift
@@ -193,11 +193,11 @@ fileprivate struct BalancesPendingRowView: View {
             VStack(spacing: 6) {
                 var rows = 0
                 if !pendingIncoming.isZero {
-                    PendingRowView(amount: pendingIncoming, incoming: true)
+                    PendingRowView(amount: pendingIncoming, incoming: true, 
shouldConfirm: false, needsKYC: false)     // TODO: !!!
                     let _ = (rows+=1)
                 }
                 if !pendingOutgoing.isZero {
-                    PendingRowView(amount: pendingOutgoing, incoming: false)
+                    PendingRowView(amount: pendingOutgoing, incoming: false, 
shouldConfirm: false, needsKYC: false)
                     let _ = (rows+=1)
                 }
                 if rows == 0 {
diff --git a/TalerWallet1/Views/Balances/PendingRowView.swift 
b/TalerWallet1/Views/Balances/PendingRowView.swift
index 9549c40..903740e 100644
--- a/TalerWallet1/Views/Balances/PendingRowView.swift
+++ b/TalerWallet1/Views/Balances/PendingRowView.swift
@@ -9,6 +9,8 @@ struct PendingRowContentV: View {
     let titles: (String, String?)
     let isHorizontal: Bool
     let incoming: Bool
+    let shouldConfirm: Bool
+    let needsKYC: Bool
 
     public static func width(titles: (String, String?), isHorizontal: Bool,
                              sizeCategory: ContentSizeCategory) -> CGFloat {
@@ -37,16 +39,29 @@ struct PendingRowContentV: View {
         let pendingColor = WalletColors().pendingColor(incoming)
         let imageName = incoming ? "plus.diamond"       //  goforward.plus   
circle
                                  : "minus.diamond"      //
+        let badgeName = needsKYC ? "star.fill"
+                                 : "circle.fill"
         HStack(spacing: 8) {
-            Image(systemName: imageName)
-                .foregroundColor(pendingColor)
-                .accessibilityFont(.largeTitle)
-                .accessibility(hidden: true)
-
-            Text(title(titles, isHorizontal))
+            HStack(alignment: .top, spacing: -8) {      // TODO: adapt spacing 
to dynamic fontsize
+                Image(systemName: imageName)
+                    .foregroundColor(pendingColor)
+                    .accessibilityFont(.largeTitle)
+                    .accessibility(hidden: true)
+                Image(systemName: badgeName)
+                    .accessibilityFont(.caption)
+                    .foregroundColor((needsKYC || shouldConfirm) ? .red : 
.clear)
+            }
+            let pendingAccTitles = accessTitles(titles, isHorizontal)
+            Text(pendingAccTitles.0)
+                .accessibilityLabel(Text(pendingAccTitles.1))
                 .lineLimit(4)
                 .accessibilityFont(.body)
         }
+        .accessibilityElement(children: .combine)
+        .accessibilityValue(needsKYC ? ". Needs K Y C" :
+                       shouldConfirm ? ". Needs bank confirmation" : 
EMPTYSTRING)
+        .accessibilityHint("Will go to pending transaction list.")
+
     }
 }
 
@@ -54,6 +69,8 @@ struct PendingRowContentV: View {
 struct PendingRowView: View {
     let amount: Amount
     let incoming: Bool
+    let shouldConfirm: Bool
+    let needsKYC: Bool
 
     @Environment(\.sizeCategory) var sizeCategory
     @EnvironmentObject private var controller: Controller
@@ -88,20 +105,21 @@ struct PendingRowView: View {
                 let currencyInfo = controller.info(for: amount.currencyStr, 
controller.currencyTicker)
                 let amountStr = amount.string(currencyInfo)
                 let amountWidth = amountStr.width(largeAmountFont: false, 
sizeCategory)
-                let inTitle = iconOnly ? (inTitle0, nil)
-                                       : (inTitle1, inTitle2)
-                let outTitle = iconOnly ? (outTitle0, nil)
-                                        : (outTitle1, outTitle2)
-                let title = incoming ? inTitle
-                                     : outTitle
-                let contentWidth = PendingRowContentV.width(titles: incoming ? 
inTitle : outTitle,
-                                                      isHorizontal: false, 
sizeCategory: sizeCategory)
-
+                let inTitles = iconOnly ? (inTitle0, nil)
+                                        : (inTitle1, inTitle2)
+                let outTitles = iconOnly ? (outTitle0, nil)
+                                         : (outTitle1, outTitle2)
+                let titles = incoming ? inTitles
+                                      : outTitles
+                let contentWidth = PendingRowContentV.width(titles: titles,
+                                                      isHorizontal: false,
+                                                      sizeCategory: 
sizeCategory)
                 let needVStack = needVStack(available: width, contentWidth: 
contentWidth, valueWidth: amountWidth)
                 AmountRowV(amountStr: amountStr, amountColor: pendingColor, 
largeAmountFont: false,
                            fitsHorizontal: !needVStack, vertAlignment: 
.center) {
                     // isHorizontal=true to try to fit "- Pending outgoing" + 
amount in 1 line
-                    PendingRowContentV(titles: title, isHorizontal: true, 
incoming: incoming)
+                    PendingRowContentV(titles: titles, isHorizontal: true, 
incoming: incoming,
+                                       shouldConfirm: shouldConfirm, needsKYC: 
needsKYC)
                 }
             }
         }
@@ -117,8 +135,8 @@ func PreviewCurrencyInfo(_ currency: String, digits: Int) 
-> CurrencyInfo {
                     fractionalNormalDigits: digits,
               fractionalTrailingZeroDigits: digits,
                               altUnitNames: [0 : unitName])
-    let formatter = CurrencyFormatter.formatter(scope: scope, specs: specs)
-    return CurrencyInfo(scope: scope, specs: specs, formatter: formatter)
+    let previewFormatter = CurrencyFormatter.formatter(scope: scope, specs: 
specs)
+    return CurrencyInfo(scope: scope, specs: specs, formatter: 
previewFormatter)
 }
 
 @MainActor
@@ -127,8 +145,8 @@ fileprivate struct Preview_Content: View {
         let test = Amount(currency: TESTCURRENCY, cent: 123)
         let demo = Amount(currency: DEMOCURRENCY, cent: 123456)
         List {
-            PendingRowView(amount: test, incoming: true)
-            PendingRowView(amount: demo, incoming: false)
+            PendingRowView(amount: test, incoming: true, shouldConfirm: true, 
needsKYC: false)
+            PendingRowView(amount: demo, incoming: false, shouldConfirm: 
false, needsKYC: true)
         }
     }
 }
diff --git a/TalerWallet1/Views/Balances/TwoRowButtons.swift 
b/TalerWallet1/Views/Balances/TwoRowButtons.swift
index 423f4fd..019b304 100644
--- a/TalerWallet1/Views/Balances/TwoRowButtons.swift
+++ b/TalerWallet1/Views/Balances/TwoRowButtons.swift
@@ -6,13 +6,14 @@ import SwiftUI
 import taler_swift
 
 extension View {
-    func title(_ titles: (String, String?), _ fitsSideBySide: Bool) -> String {
-        let delimiter = fitsSideBySide ? "\n" : " "
+    func accessTitles(_ titles: (String, String?), _ fitsSideBySide: Bool) -> 
(String, String) {
+        let space = " "
+        let delimiter = fitsSideBySide ? "\n" : space
         let (title1, title2) = titles
         if let title2 {
-            return title1 + delimiter + title2
+            return (title1 + delimiter + title2, title1 + space + title2)
         } else {
-            return title1
+            return (title1, title1)
         }
     }
 }
@@ -29,13 +30,17 @@ struct TwoRowButtons: View {
 
     var body: some View {
         Group {
-            Button(title(sendTitles, fitsSideBySide), action: sendAction)
+            let sendAccTitles = accessTitles(sendTitles, fitsSideBySide)
+            Button(sendAccTitles.0, action: sendAction)
+                .accessibilityLabel(Text(sendAccTitles.1))
                 .lineLimit(lineLimit)
                 .disabled(sendDisabled)
                 .buttonStyle(TalerButtonStyle(type: .bordered,
                                             dimmed: false,
                                            aligned: .center))
-            Button(title(recvTitles, fitsSideBySide), action: recvAction)
+            let recvAccTitles = accessTitles(recvTitles, fitsSideBySide)
+            Button(recvAccTitles.0, action: recvAction)
+                .accessibilityLabel(Text(recvAccTitles.1))
                 .lineLimit(lineLimit)
                 .disabled(false)
                 .buttonStyle(TalerButtonStyle(type: .bordered,
diff --git a/TalerWallet1/Views/Transactions/TransactionRowView.swift 
b/TalerWallet1/Views/Transactions/TransactionRowView.swift
index e3d71ab..bbdb250 100644
--- a/TalerWallet1/Views/Transactions/TransactionRowView.swift
+++ b/TalerWallet1/Views/Transactions/TransactionRowView.swift
@@ -10,6 +10,8 @@ struct TransactionRowContentV: View {
     var centerBottom: String
     let isHorizontal: Bool
     let incoming: Bool
+    let shouldConfirm: Bool
+    let needsKYC: Bool
     let foreColor:Color
 
     public static func width(titles: (String, String?), isHorizontal: Bool,
@@ -39,11 +41,18 @@ struct TransactionRowContentV: View {
     var body: some View {
         let imageName = incoming ? "plus.circle.fill"
                                  : "minus.circle.fill"
+        let badgeName = needsKYC ? "star.fill"
+                                 : "circle.fill"
         HStack(spacing: 8) {
-            Image(systemName: imageName)
-                .foregroundColor(foreColor)
-                .accessibilityFont(.largeTitle)
-                .accessibility(hidden: true)
+            HStack(alignment: .top, spacing: -8) {      // TODO: adapt spacing 
to dynamic fontsize
+                Image(systemName: imageName)
+                    .foregroundColor(foreColor)
+                    .accessibilityFont(.largeTitle)
+                    .accessibility(hidden: true)
+                Image(systemName: badgeName)
+                    .accessibilityFont(.caption)
+                    .foregroundColor((needsKYC || shouldConfirm) ? .red : 
.clear)
+            }.accessibilityHidden(true)
 
             VStack(alignment: .leading) {
                 Text(centerTop)
@@ -72,6 +81,8 @@ struct TransactionRowView: View {
         let common = transaction.common
         let amount = common.amountEffective
         let pending = transaction.isPending
+        let needsKYC = transaction.isPendingKYC
+        let shouldConfirm = transaction.shouldConfirm
         let done = transaction.isDone
         let details = transaction.detailsToShow()
         let keys = details.keys
@@ -95,9 +106,13 @@ struct TransactionRowView: View {
                            fitsHorizontal: !needVStack, vertAlignment: 
.center) {
 
                     TransactionRowContentV(centerTop: 
transaction.localizedType,
-                                           centerBottom: dateString, 
isHorizontal: true, incoming: incoming, foreColor: foreColor)
+                                        centerBottom: dateString, 
isHorizontal: true,
+                                            incoming: incoming,  
shouldConfirm: shouldConfirm,
+                                            needsKYC: needsKYC,      
foreColor: foreColor)
                 }
                     .accessibilityElement(children: .combine)
+                    .accessibilityValue(needsKYC ? ". Needs K Y C" :
+                                   shouldConfirm ? ". Needs bank confirmation" 
: EMPTYSTRING)
                     .accessibilityHint("Will go to detail view.")
             }
         }

-- 
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]