diff --git a/lib/redux/client/client_reducer.dart b/lib/redux/client/client_reducer.dart index 50b78cc18..20c95bb7b 100644 --- a/lib/redux/client/client_reducer.dart +++ b/lib/redux/client/client_reducer.dart @@ -133,8 +133,16 @@ final clientListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewClientList), ]); +ListUIState _viewClientList( + ListUIState clientListState, ViewClientList action) { + return clientListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterClientsByCustom1( ListUIState clientListState, FilterClientsByCustom1 action) { if (clientListState.custom1Filters.contains(action.value)) { diff --git a/lib/redux/credit/credit_reducer.dart b/lib/redux/credit/credit_reducer.dart index 2b8e33926..0a8e6b682 100644 --- a/lib/redux/credit/credit_reducer.dart +++ b/lib/redux/credit/credit_reducer.dart @@ -167,8 +167,16 @@ final creditListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewCreditList), ]); +ListUIState _viewCreditList( + ListUIState creditListState, ViewCreditList action) { + return creditListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterCreditsByCustom1( ListUIState creditListState, FilterCreditsByCustom1 action) { if (creditListState.custom1Filters.contains(action.value)) { diff --git a/lib/redux/design/design_reducer.dart b/lib/redux/design/design_reducer.dart index 4622bed53..15e43a67d 100644 --- a/lib/redux/design/design_reducer.dart +++ b/lib/redux/design/design_reducer.dart @@ -65,8 +65,16 @@ final designListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewDesignList), ]); +ListUIState _viewDesignList( + ListUIState designListState, ViewDesignList action) { + return designListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterDesignsByCustom1( ListUIState designListState, FilterDesignsByCustom1 action) { if (designListState.custom1Filters.contains(action.value)) { diff --git a/lib/redux/document/document_reducer.dart b/lib/redux/document/document_reducer.dart index 4de2dda8f..8555ca116 100644 --- a/lib/redux/document/document_reducer.dart +++ b/lib/redux/document/document_reducer.dart @@ -54,8 +54,16 @@ final documentListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewDocumentList), ]); +ListUIState _viewDocumentList( + ListUIState documentListState, ViewDocumentList action) { + return documentListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterDocumentsByCustom1( ListUIState documentListState, FilterDocumentsByCustom1 action) { if (documentListState.custom1Filters.contains(action.value)) { diff --git a/lib/redux/expense/expense_reducer.dart b/lib/redux/expense/expense_reducer.dart index 37584bddd..2a85bb903 100644 --- a/lib/redux/expense/expense_reducer.dart +++ b/lib/redux/expense/expense_reducer.dart @@ -77,8 +77,16 @@ final expenseListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewExpenseList), ]); +ListUIState _viewExpenseList( + ListUIState expenseListState, ViewExpenseList action) { + return expenseListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterExpensesByCustom1( ListUIState expenseListState, FilterExpensesByCustom1 action) { if (expenseListState.custom1Filters.contains(action.value)) { diff --git a/lib/redux/group/group_reducer.dart b/lib/redux/group/group_reducer.dart index 28a996072..a386894fa 100644 --- a/lib/redux/group/group_reducer.dart +++ b/lib/redux/group/group_reducer.dart @@ -74,8 +74,15 @@ final groupListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewGroupList), ]); +ListUIState _viewGroupList(ListUIState groupListState, ViewGroupList action) { + return groupListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterGroupsByCustom1( ListUIState groupListState, FilterGroupsByCustom1 action) { if (groupListState.custom1Filters.contains(action.value)) { diff --git a/lib/redux/invoice/invoice_reducer.dart b/lib/redux/invoice/invoice_reducer.dart index 25413c282..e903deede 100644 --- a/lib/redux/invoice/invoice_reducer.dart +++ b/lib/redux/invoice/invoice_reducer.dart @@ -173,8 +173,16 @@ final invoiceListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewInvoiceList), ]); +ListUIState _viewInvoiceList( + ListUIState invoiceListState, ViewInvoiceList action) { + return invoiceListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterInvoicesByCustom1( ListUIState invoiceListState, FilterInvoicesByCustom1 action) { if (invoiceListState.custom1Filters.contains(action.value)) { diff --git a/lib/redux/payment/payment_reducer.dart b/lib/redux/payment/payment_reducer.dart index 23eaa5c97..5e7ed131d 100644 --- a/lib/redux/payment/payment_reducer.dart +++ b/lib/redux/payment/payment_reducer.dart @@ -85,8 +85,16 @@ final paymentListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewPaymentList), ]); +ListUIState _viewPaymentList( + ListUIState paymentListState, ViewPaymentList action) { + return paymentListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterPaymentsByCustom1( ListUIState paymentListState, FilterPaymentsByCustom1 action) { if (paymentListState.custom1Filters.contains(action.value)) { diff --git a/lib/redux/payment_term/payment_term_reducer.dart b/lib/redux/payment_term/payment_term_reducer.dart index f14f4c56f..32ad61a43 100644 --- a/lib/redux/payment_term/payment_term_reducer.dart +++ b/lib/redux/payment_term/payment_term_reducer.dart @@ -75,8 +75,16 @@ final paymentTermListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewPaymentTermList), ]); +ListUIState _viewPaymentTermList( + ListUIState paymentTermListState, ViewPaymentTermList action) { + return paymentTermListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterPaymentTermsByCustom1( ListUIState paymentTermListState, FilterPaymentTermsByCustom1 action) { if (paymentTermListState.custom1Filters.contains(action.value)) { diff --git a/lib/redux/product/product_reducer.dart b/lib/redux/product/product_reducer.dart index 3b6b9d521..c19ce5870 100644 --- a/lib/redux/product/product_reducer.dart +++ b/lib/redux/product/product_reducer.dart @@ -86,8 +86,16 @@ final productListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewClientList), ]); +ListUIState _viewClientList( + ListUIState productListState, ViewProductList action) { + return productListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterProductsByState( ListUIState productListState, FilterProductsByState action) { if (productListState.stateFilters.contains(action.state)) { diff --git a/lib/redux/project/project_reducer.dart b/lib/redux/project/project_reducer.dart index fdca41fb6..5184b2041 100644 --- a/lib/redux/project/project_reducer.dart +++ b/lib/redux/project/project_reducer.dart @@ -98,8 +98,16 @@ final projectListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewProjectList), ]); +ListUIState _viewProjectList( + ListUIState projectListState, ViewProjectList action) { + return projectListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterProjectsByCustom1( ListUIState projectListState, FilterProjectsByCustom1 action) { if (projectListState.custom1Filters.contains(action.value)) { diff --git a/lib/redux/quote/quote_reducer.dart b/lib/redux/quote/quote_reducer.dart index 41be2bc36..e40ab2d0f 100644 --- a/lib/redux/quote/quote_reducer.dart +++ b/lib/redux/quote/quote_reducer.dart @@ -167,8 +167,15 @@ final quoteListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewQuoteList), ]); +ListUIState _viewQuoteList(ListUIState quoteListState, ViewQuoteList action) { + return quoteListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterQuotesByCustom1( ListUIState quoteListState, FilterQuotesByCustom1 action) { if (quoteListState.custom1Filters.contains(action.value)) { diff --git a/lib/redux/task/task_reducer.dart b/lib/redux/task/task_reducer.dart index e1d9b7c81..f06ec48f6 100644 --- a/lib/redux/task/task_reducer.dart +++ b/lib/redux/task/task_reducer.dart @@ -97,8 +97,15 @@ final taskListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewTaskList), ]); +ListUIState _viewTaskList(ListUIState taskListState, ViewTaskList action) { + return taskListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterTasksByCustom1( ListUIState taskListState, FilterTasksByCustom1 action) { if (taskListState.custom1Filters.contains(action.value)) { diff --git a/lib/redux/task_status/task_status_reducer.dart b/lib/redux/task_status/task_status_reducer.dart index 6d019dc19..fe2c59e20 100644 --- a/lib/redux/task_status/task_status_reducer.dart +++ b/lib/redux/task_status/task_status_reducer.dart @@ -81,8 +81,16 @@ final taskStatusListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewTaskStatusList), ]); +ListUIState _viewTaskStatusList( + ListUIState taskStatusListState, ViewTaskStatusList action) { + return taskStatusListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterTaskStatusesByCustom1( ListUIState taskStatusListState, FilterTaskStatusesByCustom1 action) { if (taskStatusListState.custom1Filters.contains(action.value)) { diff --git a/lib/redux/tax_rate/tax_rate_reducer.dart b/lib/redux/tax_rate/tax_rate_reducer.dart index fb4e846ff..8f7c98f92 100644 --- a/lib/redux/tax_rate/tax_rate_reducer.dart +++ b/lib/redux/tax_rate/tax_rate_reducer.dart @@ -65,8 +65,16 @@ final taxRateListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewTaxRateList), ]); +ListUIState _viewTaxRateList( + ListUIState taxRateListState, ViewTaxRateList action) { + return taxRateListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterTaxRatesByCustom1( ListUIState taxRateListState, FilterTaxRatesByCustom1 action) { if (taxRateListState.custom1Filters.contains(action.value)) { diff --git a/lib/redux/token/token_reducer.dart b/lib/redux/token/token_reducer.dart index f114ac618..aaab516b1 100644 --- a/lib/redux/token/token_reducer.dart +++ b/lib/redux/token/token_reducer.dart @@ -72,8 +72,15 @@ final tokenListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewTokenList), ]); +ListUIState _viewTokenList(ListUIState tokenListState, ViewTokenList action) { + return tokenListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterTokensByCustom1( ListUIState tokenListState, FilterTokensByCustom1 action) { if (tokenListState.custom1Filters.contains(action.value)) { diff --git a/lib/redux/user/user_reducer.dart b/lib/redux/user/user_reducer.dart index f7e16bf8d..7ef9bda16 100644 --- a/lib/redux/user/user_reducer.dart +++ b/lib/redux/user/user_reducer.dart @@ -74,8 +74,15 @@ final userListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewUserList), ]); +ListUIState _viewUserList(ListUIState userListState, ViewUserList action) { + return userListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterUsersByCustom1( ListUIState userListState, FilterUsersByCustom1 action) { if (userListState.custom1Filters.contains(action.value)) { diff --git a/lib/redux/vendor/vendor_reducer.dart b/lib/redux/vendor/vendor_reducer.dart index 71681360b..bc4909f25 100644 --- a/lib/redux/vendor/vendor_reducer.dart +++ b/lib/redux/vendor/vendor_reducer.dart @@ -126,8 +126,16 @@ final vendorListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewVendorList), ]); +ListUIState _viewVendorList( + ListUIState vendorListState, ViewVendorList action) { + return vendorListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterVendorsByCustom1( ListUIState vendorListState, FilterVendorsByCustom1 action) { if (vendorListState.custom1Filters.contains(action.value)) { diff --git a/lib/redux/webhook/webhook_reducer.dart b/lib/redux/webhook/webhook_reducer.dart index 53ad180d3..02dfa56eb 100644 --- a/lib/redux/webhook/webhook_reducer.dart +++ b/lib/redux/webhook/webhook_reducer.dart @@ -72,8 +72,16 @@ final webhookListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewWebhookList), ]); +ListUIState _viewWebhookList( + ListUIState webhookListState, ViewWebhookList action) { + return webhookListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterWebhooksByCustom1( ListUIState webhookListState, FilterWebhooksByCustom1 action) { if (webhookListState.custom1Filters.contains(action.value)) { diff --git a/lib/ui/client/client_screen.dart b/lib/ui/client/client_screen.dart index 0aaf68341..86ea768dd 100644 --- a/lib/ui/client/client_screen.dart +++ b/lib/ui/client/client_screen.dart @@ -35,6 +35,7 @@ class ClientScreen extends StatelessWidget { entityType: EntityType.client, onHamburgerLongPress: () => store.dispatch(StartClientMultiselect()), appBarTitle: ListFilter( + key: ValueKey('__filter_${state.clientListState.filterClearedAt}__'), entityType: EntityType.client, entityIds: viewModel.clientList, filter: state.clientListState.filter, diff --git a/lib/ui/credit/credit_screen.dart b/lib/ui/credit/credit_screen.dart index ac577ccb9..86d9594fc 100644 --- a/lib/ui/credit/credit_screen.dart +++ b/lib/ui/credit/credit_screen.dart @@ -35,6 +35,7 @@ class CreditScreen extends StatelessWidget { entityType: EntityType.credit, onHamburgerLongPress: () => store.dispatch(StartCreditMultiselect()), appBarTitle: ListFilter( + key: ValueKey('__filter_${state.creditListState.filterClearedAt}__'), entityType: EntityType.credit, entityIds: viewModel.creditList, filter: state.creditListState.filter, diff --git a/lib/ui/design/design_screen.dart b/lib/ui/design/design_screen.dart index 1a8691e53..36c7421f0 100644 --- a/lib/ui/design/design_screen.dart +++ b/lib/ui/design/design_screen.dart @@ -34,6 +34,7 @@ class DesignScreen extends StatelessWidget { onHamburgerLongPress: () => store.dispatch(StartDesignMultiselect()), onCancelSettingsSection: kSettingsInvoiceDesign, appBarTitle: ListFilter( + key: ValueKey('__filter_${state.designListState.filterClearedAt}__'), entityType: EntityType.design, entityIds: viewModel.designList, filter: state.designListState.filter, diff --git a/lib/ui/document/document_screen.dart b/lib/ui/document/document_screen.dart index fa5ec8fe2..1c609a5f4 100644 --- a/lib/ui/document/document_screen.dart +++ b/lib/ui/document/document_screen.dart @@ -33,6 +33,7 @@ class DocumentScreen extends StatelessWidget { entityType: EntityType.document, onHamburgerLongPress: () => store.dispatch(StartDocumentMultiselect()), appBarTitle: ListFilter( + key: ValueKey('__filter_${state.documentListState.filterClearedAt}__'), entityType: EntityType.document, entityIds: viewModel.documentList, filter: state.documentListState.filter, diff --git a/lib/ui/expense/expense_screen.dart b/lib/ui/expense/expense_screen.dart index 8cc5fdbb8..e662cee80 100644 --- a/lib/ui/expense/expense_screen.dart +++ b/lib/ui/expense/expense_screen.dart @@ -36,6 +36,7 @@ class ExpenseScreen extends StatelessWidget { entityType: EntityType.expense, onHamburgerLongPress: () => store.dispatch(StartExpenseMultiselect()), appBarTitle: ListFilter( + key: ValueKey('__filter_${state.expenseListState.filterClearedAt}__'), entityType: EntityType.expense, entityIds: viewModel.expenseList, filter: state.expenseListState.filter, diff --git a/lib/ui/expense_category/expense_category_screen.dart b/lib/ui/expense_category/expense_category_screen.dart index 4cdd232de..6548d130f 100644 --- a/lib/ui/expense_category/expense_category_screen.dart +++ b/lib/ui/expense_category/expense_category_screen.dart @@ -37,6 +37,8 @@ class ExpenseCategoryScreen extends StatelessWidget { store.dispatch(StartExpenseCategoryMultiselect()), onCancelSettingsSection: kSettingsExpenses, appBarTitle: ListFilter( + key: ValueKey( + '__filter_${state.expenseCategoryListState.filterClearedAt}__'), entityType: EntityType.expenseCategory, entityIds: viewModel.expenseCategoryList, filter: state.expenseCategoryListState.filter, diff --git a/lib/ui/group/group_screen.dart b/lib/ui/group/group_screen.dart index 88fa38218..58019d360 100644 --- a/lib/ui/group/group_screen.dart +++ b/lib/ui/group/group_screen.dart @@ -34,6 +34,7 @@ class GroupSettingsScreen extends StatelessWidget { entityType: EntityType.group, onHamburgerLongPress: () => store.dispatch(StartGroupMultiselect()), appBarTitle: ListFilter( + key: ValueKey('__filter_${state.groupListState.filterClearedAt}__'), entityType: EntityType.group, entityIds: viewModel.groupList, filter: state.groupListState.filter, diff --git a/lib/ui/invoice/invoice_screen.dart b/lib/ui/invoice/invoice_screen.dart index 93cd28cf5..46e8f3609 100644 --- a/lib/ui/invoice/invoice_screen.dart +++ b/lib/ui/invoice/invoice_screen.dart @@ -36,6 +36,7 @@ class InvoiceScreen extends StatelessWidget { entityType: EntityType.invoice, onHamburgerLongPress: () => store.dispatch(StartInvoiceMultiselect()), appBarTitle: ListFilter( + key: ValueKey('__filter_${state.invoiceListState.filterClearedAt}__'), entityType: EntityType.invoice, entityIds: viewModel.invoiceList, filter: state.invoiceListState.filter, diff --git a/lib/ui/payment/payment_screen.dart b/lib/ui/payment/payment_screen.dart index 80f4ba3ec..acba032f3 100644 --- a/lib/ui/payment/payment_screen.dart +++ b/lib/ui/payment/payment_screen.dart @@ -32,6 +32,7 @@ class PaymentScreen extends StatelessWidget { entityType: EntityType.payment, onHamburgerLongPress: () => store.dispatch(StartPaymentMultiselect()), appBarTitle: ListFilter( + key: ValueKey('__filter_${state.paymentListState.filterClearedAt}__'), entityType: EntityType.payment, entityIds: viewModel.paymentList, filter: state.paymentListState.filter, diff --git a/lib/ui/payment_term/payment_term_screen.dart b/lib/ui/payment_term/payment_term_screen.dart index 4be5ad407..a6f1b5f0c 100644 --- a/lib/ui/payment_term/payment_term_screen.dart +++ b/lib/ui/payment_term/payment_term_screen.dart @@ -36,6 +36,8 @@ class PaymentTermScreen extends StatelessWidget { onCancelSettingsSection: kSettingsCompanyDetails, onCancelSettingsIndex: 3, appBarTitle: ListFilter( + key: ValueKey( + '__filter_${state.paymentTermListState.filterClearedAt}__'), entityType: EntityType.paymentTerm, entityIds: viewModel.paymentTermList, filter: state.paymentTermListState.filter, diff --git a/lib/ui/product/product_screen.dart b/lib/ui/product/product_screen.dart index b26986c80..bcb4fc6f1 100644 --- a/lib/ui/product/product_screen.dart +++ b/lib/ui/product/product_screen.dart @@ -34,6 +34,7 @@ class ProductScreen extends StatelessWidget { entityType: EntityType.product, onHamburgerLongPress: () => store.dispatch(StartProductMultiselect()), appBarTitle: ListFilter( + key: ValueKey('__filter_${state.productListState.filterClearedAt}__'), entityType: EntityType.product, entityIds: viewModel.productList, filter: state.productListState.filter, diff --git a/lib/ui/project/project_screen.dart b/lib/ui/project/project_screen.dart index 1374ba368..aaa8aa9ea 100644 --- a/lib/ui/project/project_screen.dart +++ b/lib/ui/project/project_screen.dart @@ -34,6 +34,7 @@ class ProjectScreen extends StatelessWidget { entityType: EntityType.project, onHamburgerLongPress: () => store.dispatch(StartProjectMultiselect()), appBarTitle: ListFilter( + key: ValueKey('__filter_${state.projectListState.filterClearedAt}__'), entityType: EntityType.project, entityIds: viewModel.projectList, filter: state.projectListState.filter, diff --git a/lib/ui/quote/quote_screen.dart b/lib/ui/quote/quote_screen.dart index dde66791c..2627b5555 100644 --- a/lib/ui/quote/quote_screen.dart +++ b/lib/ui/quote/quote_screen.dart @@ -36,6 +36,7 @@ class QuoteScreen extends StatelessWidget { entityType: EntityType.quote, onHamburgerLongPress: () => store.dispatch(StartQuoteMultiselect()), appBarTitle: ListFilter( + key: ValueKey('__filter_${state.quoteListState.filterClearedAt}__'), entityType: EntityType.quote, entityIds: viewModel.quoteList, filter: state.quoteListState.filter, diff --git a/lib/ui/recurring_invoice/recurring_invoice_screen.dart b/lib/ui/recurring_invoice/recurring_invoice_screen.dart index 2db1f7645..500d7780e 100644 --- a/lib/ui/recurring_invoice/recurring_invoice_screen.dart +++ b/lib/ui/recurring_invoice/recurring_invoice_screen.dart @@ -37,6 +37,8 @@ class RecurringInvoiceScreen extends StatelessWidget { onHamburgerLongPress: () => store.dispatch(StartRecurringInvoiceMultiselect()), appBarTitle: ListFilter( + key: ValueKey( + '__filter_${state.recurringInvoiceListState.filterClearedAt}__'), entityType: EntityType.recurringInvoice, entityIds: viewModel.recurringInvoiceList, filter: state.recurringInvoiceListState.filter, diff --git a/lib/ui/subscription/subscription_screen.dart b/lib/ui/subscription/subscription_screen.dart index 45800aa9f..6d9f0d2b8 100644 --- a/lib/ui/subscription/subscription_screen.dart +++ b/lib/ui/subscription/subscription_screen.dart @@ -38,6 +38,7 @@ class SubscriptionScreen extends StatelessWidget { onHamburgerLongPress: () => store.dispatch(StartSubscriptionMultiselect()), appBarTitle: ListFilter( + key: ValueKey('__filter_${state.subscriptionListState.filterClearedAt}__'), entityType: EntityType.subscription, entityIds: viewModel.subscriptionList, filter: state.subscriptionListState.filter, diff --git a/lib/ui/task/task_screen.dart b/lib/ui/task/task_screen.dart index 0362379e1..ea94e33ec 100644 --- a/lib/ui/task/task_screen.dart +++ b/lib/ui/task/task_screen.dart @@ -41,6 +41,7 @@ class TaskScreen extends StatelessWidget { entityType: EntityType.task, onHamburgerLongPress: () => store.dispatch(StartTaskMultiselect()), appBarTitle: ListFilter( + key: ValueKey('__filter_${state.taskListState.filterClearedAt}__'), entityType: EntityType.task, entityIds: viewModel.taskList, filter: state.taskListState.filter, diff --git a/lib/ui/task_status/task_status_screen.dart b/lib/ui/task_status/task_status_screen.dart index 730ec1737..d930b5e9b 100644 --- a/lib/ui/task_status/task_status_screen.dart +++ b/lib/ui/task_status/task_status_screen.dart @@ -36,6 +36,8 @@ class TaskStatusScreen extends StatelessWidget { onHamburgerLongPress: () => store.dispatch(StartTaskStatusMultiselect()), onCancelSettingsSection: kSettingsTasks, appBarTitle: ListFilter( + key: + ValueKey('__filter_${state.taskStatusListState.filterClearedAt}__'), entityType: EntityType.taskStatus, entityIds: viewModel.taskStatusList, filter: state.taskStatusListState.filter, diff --git a/lib/ui/tax_rate/tax_rate_screen.dart b/lib/ui/tax_rate/tax_rate_screen.dart index 22731012d..680f7f62b 100644 --- a/lib/ui/tax_rate/tax_rate_screen.dart +++ b/lib/ui/tax_rate/tax_rate_screen.dart @@ -33,6 +33,7 @@ class TaxRateSettingsScreen extends StatelessWidget { onHamburgerLongPress: () => store.dispatch(StartTaxRateMultiselect()), onCancelSettingsSection: kSettingsTaxSettings, appBarTitle: ListFilter( + key: ValueKey('__filter_${state.taxRateListState.filterClearedAt}__'), entityType: EntityType.taxRate, entityIds: viewModel.taxRateList, filter: state.taxRateListState.filter, diff --git a/lib/ui/token/token_screen.dart b/lib/ui/token/token_screen.dart index 0463bac6f..15e4341c5 100644 --- a/lib/ui/token/token_screen.dart +++ b/lib/ui/token/token_screen.dart @@ -37,6 +37,7 @@ class TokenScreen extends StatelessWidget { onHamburgerLongPress: () => store.dispatch(StartTokenMultiselect()), onCancelSettingsSection: kSettingsAccountManagement, appBarTitle: ListFilter( + key: ValueKey('__filter_${state.tokenListState.filterClearedAt}__'), entityType: EntityType.token, entityIds: viewModel.tokenList, filter: state.tokenListState.filter, diff --git a/lib/ui/user/user_screen.dart b/lib/ui/user/user_screen.dart index 389cf8ed5..fd0359217 100644 --- a/lib/ui/user/user_screen.dart +++ b/lib/ui/user/user_screen.dart @@ -34,6 +34,7 @@ class UserScreen extends StatelessWidget { entityType: EntityType.user, onHamburgerLongPress: () => store.dispatch(StartUserMultiselect()), appBarTitle: ListFilter( + key: ValueKey('__filter_${state.userListState.filterClearedAt}__'), entityType: EntityType.user, entityIds: viewModel.userList, filter: state.userListState.filter, diff --git a/lib/ui/vendor/vendor_screen.dart b/lib/ui/vendor/vendor_screen.dart index 1d8eb5fc8..1cd285ac2 100644 --- a/lib/ui/vendor/vendor_screen.dart +++ b/lib/ui/vendor/vendor_screen.dart @@ -34,6 +34,7 @@ class VendorScreen extends StatelessWidget { entityType: EntityType.vendor, onHamburgerLongPress: () => store.dispatch(StartVendorMultiselect()), appBarTitle: ListFilter( + key: ValueKey('__filter_${state.vendorListState.filterClearedAt}__'), entityType: EntityType.vendor, entityIds: viewModel.vendorList, filter: state.vendorListState.filter, diff --git a/lib/ui/webhook/webhook_screen.dart b/lib/ui/webhook/webhook_screen.dart index 1d20cc82b..c3884648d 100644 --- a/lib/ui/webhook/webhook_screen.dart +++ b/lib/ui/webhook/webhook_screen.dart @@ -36,6 +36,7 @@ class WebhookScreen extends StatelessWidget { onHamburgerLongPress: () => store.dispatch(StartWebhookMultiselect()), onCancelSettingsSection: kSettingsAccountManagement, appBarTitle: ListFilter( + key: ValueKey('__filter_${state.webhookListState.filterClearedAt}__'), entityType: EntityType.webhook, entityIds: viewModel.webhookList, filter: state.webhookListState.filter, diff --git a/stubs/redux/stub/stub_reducer b/stubs/redux/stub/stub_reducer index b6f2d9364..2a46b489a 100644 --- a/stubs/redux/stub/stub_reducer +++ b/stubs/redux/stub/stub_reducer @@ -85,8 +85,16 @@ final stubListReducer = combineReducers([ TypedReducer( _removeFromListMultiselect), TypedReducer(_clearListMultiselect), + TypedReducer(_viewStubList), ]); +ListUIState _viewStubList( + ListUIState stubListState, ViewStubList action) { + return stubListState.rebuild((b) => b + ..filter = null + ..filterClearedAt = DateTime.now().millisecondsSinceEpoch); +} + ListUIState _filterStubsByCustom1( ListUIState stubListState, FilterStubsByCustom1 action) { if (stubListState.custom1Filters.contains(action.value)) { diff --git a/stubs/ui/stub/stub_screen b/stubs/ui/stub/stub_screen index b1399c4b1..382dca17f 100644 --- a/stubs/ui/stub/stub_screen +++ b/stubs/ui/stub/stub_screen @@ -36,6 +36,7 @@ class StubScreen extends StatelessWidget { entityType: EntityType.stub, onHamburgerLongPress: () => store.dispatch(StartStubMultiselect()), appBarTitle: ListFilter( + key: ValueKey('__filter_${state.stubListState.filterClearedAt}__'), entityType: EntityType.stub, entityIds: viewModel.stubList, filter: state.stubListState.filter,