Issue #284: (Non)scrollable Transactions list based on Drawer

This commit is contained in:
Lukas Korba 2022-04-21 19:11:55 +02:00 committed by GitHub
parent 4b114efa8b
commit 557aabdd17
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 9 deletions

View File

@ -68,6 +68,7 @@ extension HomeReducer {
case .updateDrawer(let drawerOverlay):
state.drawerOverlay = drawerOverlay
state.transactionHistoryState.isScrollable = drawerOverlay == .full ? true : false
return .none
case .transactionHistory(let historyAction):

View File

@ -14,8 +14,10 @@ struct TransactionHistoryState: Equatable {
case showTransaction(Transaction)
}
var transactions: IdentifiedArrayOf<Transaction>
var route: Route?
var isScrollable = false
var transactions: IdentifiedArrayOf<Transaction>
}
enum TransactionHistoryAction: Equatable {
@ -73,7 +75,7 @@ extension Transaction {
extension TransactionHistoryState {
static var placeHolder: Self {
.init(transactions: .placeholder, route: nil)
.init(transactions: .placeholder)
}
}
@ -90,8 +92,8 @@ extension TransactionHistoryStore {
let transactions = IdentifiedArrayOf<Transaction>.placeholder
return Store(
initialState: TransactionHistoryState(
transactions: transactions,
route: .showTransaction(transactions[3])
route: .showTransaction(transactions[3]),
transactions: transactions
),
reducer: .default.debug(),
environment: ()
@ -102,7 +104,7 @@ extension TransactionHistoryStore {
extension IdentifiedArrayOf where Element == Transaction {
static var placeholder: IdentifiedArrayOf<Transaction> {
return .init(
uniqueElements: (0..<10).map {
uniqueElements: (0..<30).map {
Transaction(
id: $0,
amount: 25,

View File

@ -5,14 +5,37 @@ struct TransactionHistoryView: View {
let store: Store<TransactionHistoryState, TransactionHistoryAction>
var body: some View {
WithViewStore(store) { viewStore in
ForEach(viewStore.transactions) { transaction in
WithStateBinding(binding: viewStore.bindingForSelectingTransaction(transaction)) {
UITableView.appearance().backgroundColor = .clear
UITableViewCell.appearance().backgroundColor = .clear
return WithViewStore(store) { viewStore in
if viewStore.isScrollable {
List {
transactionsList(with: viewStore)
}
.listStyle(.sidebar)
} else {
transactionsList(with: viewStore)
.padding(.leading, 32)
}
}
}
}
extension TransactionHistoryView {
func transactionsList(with viewStore: TransactionHistoryViewStore) -> some View {
ForEach(viewStore.transactions) { transaction in
WithStateBinding(binding: viewStore.bindingForSelectingTransaction(transaction)) { active in
HStack {
Text("Show Transaction \(transaction.id)")
.navigationLink(
isActive: $0,
isActive: active,
destination: { TransactionDetailView(transaction: transaction) }
)
.foregroundColor(Asset.Colors.Text.body.color)
.listRowBackground(Color.clear)
Spacer()
}
}
}