Issue #284: (Non)scrollable Transactions list based on Drawer
This commit is contained in:
parent
4b114efa8b
commit
557aabdd17
|
@ -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):
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -5,14 +5,37 @@ struct TransactionHistoryView: View {
|
|||
let store: Store<TransactionHistoryState, TransactionHistoryAction>
|
||||
|
||||
var body: some View {
|
||||
WithViewStore(store) { viewStore in
|
||||
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)) {
|
||||
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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue