diff --git a/secant/Features/Home/HomeStore.swift b/secant/Features/Home/HomeStore.swift index 84f4d4f..6696bd8 100644 --- a/secant/Features/Home/HomeStore.swift +++ b/secant/Features/Home/HomeStore.swift @@ -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): diff --git a/secant/Features/TransactionHistory/TransactionHistoryStore.swift b/secant/Features/TransactionHistory/TransactionHistoryStore.swift index 6549858..9f386d3 100644 --- a/secant/Features/TransactionHistory/TransactionHistoryStore.swift +++ b/secant/Features/TransactionHistory/TransactionHistoryStore.swift @@ -14,8 +14,10 @@ struct TransactionHistoryState: Equatable { case showTransaction(Transaction) } - var transactions: IdentifiedArrayOf var route: Route? + + var isScrollable = false + var transactions: IdentifiedArrayOf } 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.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 { return .init( - uniqueElements: (0..<10).map { + uniqueElements: (0..<30).map { Transaction( id: $0, amount: 25, diff --git a/secant/Features/TransactionHistory/Views/TransactionHistoryView.swift b/secant/Features/TransactionHistory/Views/TransactionHistoryView.swift index addb88e..2bfe797 100644 --- a/secant/Features/TransactionHistory/Views/TransactionHistoryView.swift +++ b/secant/Features/TransactionHistory/Views/TransactionHistoryView.swift @@ -5,14 +5,37 @@ struct TransactionHistoryView: View { let store: Store 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() } } }