import 'package:invoiceninja_flutter/redux/static/static_state.dart'; import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:memoize/memoize.dart'; import 'package:built_collection/built_collection.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; var memoizedDropdownTransactionList = memo8( (BuiltMap transactionMap, BuiltList transactionList, StaticState staticState, BuiltMap userMap, BuiltMap invoiceMap, BuiltMap expenseMap, BuiltMap bankAccountMap, String clientId) => dropdownTransactionsSelector( transactionMap, transactionList, staticState, userMap, invoiceMap, expenseMap, bankAccountMap, clientId)); List dropdownTransactionsSelector( BuiltMap transactionMap, BuiltList transactionList, StaticState staticState, BuiltMap userMap, BuiltMap invoiceMap, BuiltMap expenseMap, BuiltMap bankAccountMap, String clientId) { final list = transactionList.where((transactionId) { final transaction = transactionMap[transactionId]; /* if (clientId != null && clientId > 0 && transaction.clientId != clientId) { return false; } */ return transaction.isActive; }).toList(); list.sort((transactionAId, transactionBId) { final transactionA = transactionMap[transactionAId]; final transactionB = transactionMap[transactionBId]; return transactionA.compareTo(transactionB, TransactionFields.date, true, invoiceMap, expenseMap, bankAccountMap); }); return list; } var memoizedFilteredTransactionList = memo7((SelectionState selectionState, BuiltMap transactionMap, BuiltList transactionList, BuiltMap invoiceMap, BuiltMap expenseMap, BuiltMap bankAccountMap, ListUIState transactionListState) => filteredTransactionsSelector( selectionState, transactionMap, transactionList, invoiceMap, expenseMap, bankAccountMap, transactionListState)); List filteredTransactionsSelector( SelectionState selectionState, BuiltMap transactionMap, BuiltList transactionList, BuiltMap invoiceMap, BuiltMap expenseMap, BuiltMap bankAccountMap, ListUIState transactionListState) { final filterEntityId = selectionState.filterEntityId; //final filterEntityType = selectionState.filterEntityType; final list = transactionList.where((transactionId) { final transaction = transactionMap[transactionId]; if (filterEntityId != null && transaction.id != filterEntityId) { return false; } else {} if (!transaction.matchesStates(transactionListState.stateFilters)) { return false; } return transaction.matchesFilter(transactionListState.filter); }).toList(); list.sort((transactionAId, transactionBId) { final transactionA = transactionMap[transactionAId]; final transactionB = transactionMap[transactionBId]; return transactionA.compareTo( transactionB, transactionListState.sortField, transactionListState.sortAscending, invoiceMap, expenseMap, bankAccountMap); }); return list; }