summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Stibane <marc@taler.net>2023-07-25 16:35:50 +0200
committerMarc Stibane <marc@taler.net>2023-07-25 16:35:50 +0200
commita2f80815c7baf4dcada9b1b68d913978431f36b7 (patch)
treef9c2a355e5d336dcbccd396f8c93c8b4f2aefd2e
parent71bdc77649055c39e8462623b7ba0108ee4aab55 (diff)
downloadtaler-ios-a2f80815c7baf4dcada9b1b68d913978431f36b7.tar.gz
taler-ios-a2f80815c7baf4dcada9b1b68d913978431f36b7.tar.bz2
taler-ios-a2f80815c7baf4dcada9b1b68d913978431f36b7.zip
show up to 3 transactions in Balances
-rw-r--r--TalerWallet1/Views/Balances/BalancesListView.swift4
-rw-r--r--TalerWallet1/Views/Balances/BalancesSectionView.swift29
2 files changed, 31 insertions, 2 deletions
diff --git a/TalerWallet1/Views/Balances/BalancesListView.swift b/TalerWallet1/Views/Balances/BalancesListView.swift
index d1b31d2..de41025 100644
--- a/TalerWallet1/Views/Balances/BalancesListView.swift
+++ b/TalerWallet1/Views/Balances/BalancesListView.swift
@@ -10,7 +10,7 @@ import AVFoundation
/// This view shows the list of balances / currencies, each in its own section
struct BalancesListView: View {
- private let symLog = SymLogV(0)
+ private let symLog = SymLogV()
let navTitle: String
let hamburgerAction: () -> Void
@@ -139,8 +139,10 @@ extension BalancesListView {
let _ = symLog?.vlog() // just to get the # to compare it with .onAppear & onDisappear
#endif
Group { // necessary for .backslide transition (bug in SwiftUI)
+ let count = balances.count
List(balances, id: \.self) { balance in
BalancesSectionView(balance: balance,
+ sectionCount: count,
centsToTransfer: $centsToTransfer,
summary: $summary)
}
diff --git a/TalerWallet1/Views/Balances/BalancesSectionView.swift b/TalerWallet1/Views/Balances/BalancesSectionView.swift
index 655bb9a..6cf640c 100644
--- a/TalerWallet1/Views/Balances/BalancesSectionView.swift
+++ b/TalerWallet1/Views/Balances/BalancesSectionView.swift
@@ -16,7 +16,8 @@ import SymLog
struct BalancesSectionView: View {
private let symLog = SymLogV()
- var balance:Balance
+ let balance: Balance
+ let sectionCount: Int
@Binding var centsToTransfer: UInt64
@Binding var summary: String
@@ -174,11 +175,36 @@ struct BalancesSectionView: View {
transactions = response
pendingTransactions = WalletModel.pendingTransactions(response)
uncompletedTransactions = WalletModel.uncompletedTransactions(response)
+ completedTransactions = WalletModel.completedTransactions(response)
shownSectionID = sectionID
// } else {
// symLog.log("task for BalancesSectionView \(sectionID) ❗️ skip reloading Transactions")
// }
}
+ let transactionCount = completedTransactions.count
+ if sectionCount == 1 && transactionCount > 0 {
+ let sortedTransactions = completedTransactions.sorted {
+ do {
+ let first = try $0.common.timestamp.milliseconds()
+ let second = try $1.common.timestamp.milliseconds()
+ return first > second
+ } catch {
+ symLog.log(error)
+ return false // should never happen
+ }
+ }
+ Section {
+ let slice = sortedTransactions.prefix(3)
+ let threeTransactions = Array(slice)
+ TransactionsRowsView(symLog: symLog,
+ currency: currency,
+ transactions: threeTransactions,
+ reloadOneAction: reloadOneAction)
+ } header: {
+ Text("Last transactions")
+ .font(.callout)
+ }
+ }
} // body
}
// MARK: -
@@ -194,6 +220,7 @@ fileprivate struct BindingViewContainer : View {
requiresUserInput: false,
hasPendingTransactions: true)
BalancesSectionView(balance: balance,
+ sectionCount: 2,
centsToTransfer: $centsToTransfer,
summary: $summary)
}