Clear filter on view list

This commit is contained in:
Hillel Coren 2021-04-19 21:35:53 +03:00
parent ec68355aa1
commit 898ddf15f2
43 changed files with 182 additions and 0 deletions

View File

@ -133,8 +133,16 @@ final clientListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromClientMultiselect>( TypedReducer<ListUIState, RemoveFromClientMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearClientMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearClientMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewClientList>(_viewClientList),
]); ]);
ListUIState _viewClientList(
ListUIState clientListState, ViewClientList action) {
return clientListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterClientsByCustom1( ListUIState _filterClientsByCustom1(
ListUIState clientListState, FilterClientsByCustom1 action) { ListUIState clientListState, FilterClientsByCustom1 action) {
if (clientListState.custom1Filters.contains(action.value)) { if (clientListState.custom1Filters.contains(action.value)) {

View File

@ -167,8 +167,16 @@ final creditListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromCreditMultiselect>( TypedReducer<ListUIState, RemoveFromCreditMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearCreditMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearCreditMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewCreditList>(_viewCreditList),
]); ]);
ListUIState _viewCreditList(
ListUIState creditListState, ViewCreditList action) {
return creditListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterCreditsByCustom1( ListUIState _filterCreditsByCustom1(
ListUIState creditListState, FilterCreditsByCustom1 action) { ListUIState creditListState, FilterCreditsByCustom1 action) {
if (creditListState.custom1Filters.contains(action.value)) { if (creditListState.custom1Filters.contains(action.value)) {

View File

@ -65,8 +65,16 @@ final designListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromDesignMultiselect>( TypedReducer<ListUIState, RemoveFromDesignMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearDesignMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearDesignMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewDesignList>(_viewDesignList),
]); ]);
ListUIState _viewDesignList(
ListUIState designListState, ViewDesignList action) {
return designListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterDesignsByCustom1( ListUIState _filterDesignsByCustom1(
ListUIState designListState, FilterDesignsByCustom1 action) { ListUIState designListState, FilterDesignsByCustom1 action) {
if (designListState.custom1Filters.contains(action.value)) { if (designListState.custom1Filters.contains(action.value)) {

View File

@ -54,8 +54,16 @@ final documentListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromDocumentMultiselect>( TypedReducer<ListUIState, RemoveFromDocumentMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearDocumentMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearDocumentMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewDocumentList>(_viewDocumentList),
]); ]);
ListUIState _viewDocumentList(
ListUIState documentListState, ViewDocumentList action) {
return documentListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterDocumentsByCustom1( ListUIState _filterDocumentsByCustom1(
ListUIState documentListState, FilterDocumentsByCustom1 action) { ListUIState documentListState, FilterDocumentsByCustom1 action) {
if (documentListState.custom1Filters.contains(action.value)) { if (documentListState.custom1Filters.contains(action.value)) {

View File

@ -77,8 +77,16 @@ final expenseListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromExpenseMultiselect>( TypedReducer<ListUIState, RemoveFromExpenseMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearExpenseMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearExpenseMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewExpenseList>(_viewExpenseList),
]); ]);
ListUIState _viewExpenseList(
ListUIState expenseListState, ViewExpenseList action) {
return expenseListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterExpensesByCustom1( ListUIState _filterExpensesByCustom1(
ListUIState expenseListState, FilterExpensesByCustom1 action) { ListUIState expenseListState, FilterExpensesByCustom1 action) {
if (expenseListState.custom1Filters.contains(action.value)) { if (expenseListState.custom1Filters.contains(action.value)) {

View File

@ -74,8 +74,15 @@ final groupListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromGroupMultiselect>( TypedReducer<ListUIState, RemoveFromGroupMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearGroupMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearGroupMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewGroupList>(_viewGroupList),
]); ]);
ListUIState _viewGroupList(ListUIState groupListState, ViewGroupList action) {
return groupListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterGroupsByCustom1( ListUIState _filterGroupsByCustom1(
ListUIState groupListState, FilterGroupsByCustom1 action) { ListUIState groupListState, FilterGroupsByCustom1 action) {
if (groupListState.custom1Filters.contains(action.value)) { if (groupListState.custom1Filters.contains(action.value)) {

View File

@ -173,8 +173,16 @@ final invoiceListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromInvoiceMultiselect>( TypedReducer<ListUIState, RemoveFromInvoiceMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearInvoiceMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearInvoiceMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewInvoiceList>(_viewInvoiceList),
]); ]);
ListUIState _viewInvoiceList(
ListUIState invoiceListState, ViewInvoiceList action) {
return invoiceListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterInvoicesByCustom1( ListUIState _filterInvoicesByCustom1(
ListUIState invoiceListState, FilterInvoicesByCustom1 action) { ListUIState invoiceListState, FilterInvoicesByCustom1 action) {
if (invoiceListState.custom1Filters.contains(action.value)) { if (invoiceListState.custom1Filters.contains(action.value)) {

View File

@ -85,8 +85,16 @@ final paymentListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromPaymentMultiselect>( TypedReducer<ListUIState, RemoveFromPaymentMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearPaymentMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearPaymentMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewPaymentList>(_viewPaymentList),
]); ]);
ListUIState _viewPaymentList(
ListUIState paymentListState, ViewPaymentList action) {
return paymentListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterPaymentsByCustom1( ListUIState _filterPaymentsByCustom1(
ListUIState paymentListState, FilterPaymentsByCustom1 action) { ListUIState paymentListState, FilterPaymentsByCustom1 action) {
if (paymentListState.custom1Filters.contains(action.value)) { if (paymentListState.custom1Filters.contains(action.value)) {

View File

@ -75,8 +75,16 @@ final paymentTermListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromPaymentTermMultiselect>( TypedReducer<ListUIState, RemoveFromPaymentTermMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearPaymentTermMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearPaymentTermMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewPaymentTermList>(_viewPaymentTermList),
]); ]);
ListUIState _viewPaymentTermList(
ListUIState paymentTermListState, ViewPaymentTermList action) {
return paymentTermListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterPaymentTermsByCustom1( ListUIState _filterPaymentTermsByCustom1(
ListUIState paymentTermListState, FilterPaymentTermsByCustom1 action) { ListUIState paymentTermListState, FilterPaymentTermsByCustom1 action) {
if (paymentTermListState.custom1Filters.contains(action.value)) { if (paymentTermListState.custom1Filters.contains(action.value)) {

View File

@ -86,8 +86,16 @@ final productListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromProductMultiselect>( TypedReducer<ListUIState, RemoveFromProductMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearProductMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearProductMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewProductList>(_viewClientList),
]); ]);
ListUIState _viewClientList(
ListUIState productListState, ViewProductList action) {
return productListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterProductsByState( ListUIState _filterProductsByState(
ListUIState productListState, FilterProductsByState action) { ListUIState productListState, FilterProductsByState action) {
if (productListState.stateFilters.contains(action.state)) { if (productListState.stateFilters.contains(action.state)) {

View File

@ -98,8 +98,16 @@ final projectListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromProjectMultiselect>( TypedReducer<ListUIState, RemoveFromProjectMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearProjectMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearProjectMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewProjectList>(_viewProjectList),
]); ]);
ListUIState _viewProjectList(
ListUIState projectListState, ViewProjectList action) {
return projectListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterProjectsByCustom1( ListUIState _filterProjectsByCustom1(
ListUIState projectListState, FilterProjectsByCustom1 action) { ListUIState projectListState, FilterProjectsByCustom1 action) {
if (projectListState.custom1Filters.contains(action.value)) { if (projectListState.custom1Filters.contains(action.value)) {

View File

@ -167,8 +167,15 @@ final quoteListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromQuoteMultiselect>( TypedReducer<ListUIState, RemoveFromQuoteMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearQuoteMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearQuoteMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewQuoteList>(_viewQuoteList),
]); ]);
ListUIState _viewQuoteList(ListUIState quoteListState, ViewQuoteList action) {
return quoteListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterQuotesByCustom1( ListUIState _filterQuotesByCustom1(
ListUIState quoteListState, FilterQuotesByCustom1 action) { ListUIState quoteListState, FilterQuotesByCustom1 action) {
if (quoteListState.custom1Filters.contains(action.value)) { if (quoteListState.custom1Filters.contains(action.value)) {

View File

@ -97,8 +97,15 @@ final taskListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromTaskMultiselect>( TypedReducer<ListUIState, RemoveFromTaskMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearTaskMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearTaskMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewTaskList>(_viewTaskList),
]); ]);
ListUIState _viewTaskList(ListUIState taskListState, ViewTaskList action) {
return taskListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterTasksByCustom1( ListUIState _filterTasksByCustom1(
ListUIState taskListState, FilterTasksByCustom1 action) { ListUIState taskListState, FilterTasksByCustom1 action) {
if (taskListState.custom1Filters.contains(action.value)) { if (taskListState.custom1Filters.contains(action.value)) {

View File

@ -81,8 +81,16 @@ final taskStatusListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromTaskStatusMultiselect>( TypedReducer<ListUIState, RemoveFromTaskStatusMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearTaskStatusMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearTaskStatusMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewTaskStatusList>(_viewTaskStatusList),
]); ]);
ListUIState _viewTaskStatusList(
ListUIState taskStatusListState, ViewTaskStatusList action) {
return taskStatusListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterTaskStatusesByCustom1( ListUIState _filterTaskStatusesByCustom1(
ListUIState taskStatusListState, FilterTaskStatusesByCustom1 action) { ListUIState taskStatusListState, FilterTaskStatusesByCustom1 action) {
if (taskStatusListState.custom1Filters.contains(action.value)) { if (taskStatusListState.custom1Filters.contains(action.value)) {

View File

@ -65,8 +65,16 @@ final taxRateListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromTaxRateMultiselect>( TypedReducer<ListUIState, RemoveFromTaxRateMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearTaxRateMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearTaxRateMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewTaxRateList>(_viewTaxRateList),
]); ]);
ListUIState _viewTaxRateList(
ListUIState taxRateListState, ViewTaxRateList action) {
return taxRateListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterTaxRatesByCustom1( ListUIState _filterTaxRatesByCustom1(
ListUIState taxRateListState, FilterTaxRatesByCustom1 action) { ListUIState taxRateListState, FilterTaxRatesByCustom1 action) {
if (taxRateListState.custom1Filters.contains(action.value)) { if (taxRateListState.custom1Filters.contains(action.value)) {

View File

@ -72,8 +72,15 @@ final tokenListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromTokenMultiselect>( TypedReducer<ListUIState, RemoveFromTokenMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearTokenMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearTokenMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewTokenList>(_viewTokenList),
]); ]);
ListUIState _viewTokenList(ListUIState tokenListState, ViewTokenList action) {
return tokenListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterTokensByCustom1( ListUIState _filterTokensByCustom1(
ListUIState tokenListState, FilterTokensByCustom1 action) { ListUIState tokenListState, FilterTokensByCustom1 action) {
if (tokenListState.custom1Filters.contains(action.value)) { if (tokenListState.custom1Filters.contains(action.value)) {

View File

@ -74,8 +74,15 @@ final userListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromUserMultiselect>( TypedReducer<ListUIState, RemoveFromUserMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearUserMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearUserMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewUserList>(_viewUserList),
]); ]);
ListUIState _viewUserList(ListUIState userListState, ViewUserList action) {
return userListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterUsersByCustom1( ListUIState _filterUsersByCustom1(
ListUIState userListState, FilterUsersByCustom1 action) { ListUIState userListState, FilterUsersByCustom1 action) {
if (userListState.custom1Filters.contains(action.value)) { if (userListState.custom1Filters.contains(action.value)) {

View File

@ -126,8 +126,16 @@ final vendorListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromVendorMultiselect>( TypedReducer<ListUIState, RemoveFromVendorMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearVendorMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearVendorMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewVendorList>(_viewVendorList),
]); ]);
ListUIState _viewVendorList(
ListUIState vendorListState, ViewVendorList action) {
return vendorListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterVendorsByCustom1( ListUIState _filterVendorsByCustom1(
ListUIState vendorListState, FilterVendorsByCustom1 action) { ListUIState vendorListState, FilterVendorsByCustom1 action) {
if (vendorListState.custom1Filters.contains(action.value)) { if (vendorListState.custom1Filters.contains(action.value)) {

View File

@ -72,8 +72,16 @@ final webhookListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromWebhookMultiselect>( TypedReducer<ListUIState, RemoveFromWebhookMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearWebhookMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearWebhookMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewWebhookList>(_viewWebhookList),
]); ]);
ListUIState _viewWebhookList(
ListUIState webhookListState, ViewWebhookList action) {
return webhookListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterWebhooksByCustom1( ListUIState _filterWebhooksByCustom1(
ListUIState webhookListState, FilterWebhooksByCustom1 action) { ListUIState webhookListState, FilterWebhooksByCustom1 action) {
if (webhookListState.custom1Filters.contains(action.value)) { if (webhookListState.custom1Filters.contains(action.value)) {

View File

@ -35,6 +35,7 @@ class ClientScreen extends StatelessWidget {
entityType: EntityType.client, entityType: EntityType.client,
onHamburgerLongPress: () => store.dispatch(StartClientMultiselect()), onHamburgerLongPress: () => store.dispatch(StartClientMultiselect()),
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey('__filter_${state.clientListState.filterClearedAt}__'),
entityType: EntityType.client, entityType: EntityType.client,
entityIds: viewModel.clientList, entityIds: viewModel.clientList,
filter: state.clientListState.filter, filter: state.clientListState.filter,

View File

@ -35,6 +35,7 @@ class CreditScreen extends StatelessWidget {
entityType: EntityType.credit, entityType: EntityType.credit,
onHamburgerLongPress: () => store.dispatch(StartCreditMultiselect()), onHamburgerLongPress: () => store.dispatch(StartCreditMultiselect()),
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey('__filter_${state.creditListState.filterClearedAt}__'),
entityType: EntityType.credit, entityType: EntityType.credit,
entityIds: viewModel.creditList, entityIds: viewModel.creditList,
filter: state.creditListState.filter, filter: state.creditListState.filter,

View File

@ -34,6 +34,7 @@ class DesignScreen extends StatelessWidget {
onHamburgerLongPress: () => store.dispatch(StartDesignMultiselect()), onHamburgerLongPress: () => store.dispatch(StartDesignMultiselect()),
onCancelSettingsSection: kSettingsInvoiceDesign, onCancelSettingsSection: kSettingsInvoiceDesign,
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey('__filter_${state.designListState.filterClearedAt}__'),
entityType: EntityType.design, entityType: EntityType.design,
entityIds: viewModel.designList, entityIds: viewModel.designList,
filter: state.designListState.filter, filter: state.designListState.filter,

View File

@ -33,6 +33,7 @@ class DocumentScreen extends StatelessWidget {
entityType: EntityType.document, entityType: EntityType.document,
onHamburgerLongPress: () => store.dispatch(StartDocumentMultiselect()), onHamburgerLongPress: () => store.dispatch(StartDocumentMultiselect()),
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey('__filter_${state.documentListState.filterClearedAt}__'),
entityType: EntityType.document, entityType: EntityType.document,
entityIds: viewModel.documentList, entityIds: viewModel.documentList,
filter: state.documentListState.filter, filter: state.documentListState.filter,

View File

@ -36,6 +36,7 @@ class ExpenseScreen extends StatelessWidget {
entityType: EntityType.expense, entityType: EntityType.expense,
onHamburgerLongPress: () => store.dispatch(StartExpenseMultiselect()), onHamburgerLongPress: () => store.dispatch(StartExpenseMultiselect()),
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey('__filter_${state.expenseListState.filterClearedAt}__'),
entityType: EntityType.expense, entityType: EntityType.expense,
entityIds: viewModel.expenseList, entityIds: viewModel.expenseList,
filter: state.expenseListState.filter, filter: state.expenseListState.filter,

View File

@ -37,6 +37,8 @@ class ExpenseCategoryScreen extends StatelessWidget {
store.dispatch(StartExpenseCategoryMultiselect()), store.dispatch(StartExpenseCategoryMultiselect()),
onCancelSettingsSection: kSettingsExpenses, onCancelSettingsSection: kSettingsExpenses,
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey(
'__filter_${state.expenseCategoryListState.filterClearedAt}__'),
entityType: EntityType.expenseCategory, entityType: EntityType.expenseCategory,
entityIds: viewModel.expenseCategoryList, entityIds: viewModel.expenseCategoryList,
filter: state.expenseCategoryListState.filter, filter: state.expenseCategoryListState.filter,

View File

@ -34,6 +34,7 @@ class GroupSettingsScreen extends StatelessWidget {
entityType: EntityType.group, entityType: EntityType.group,
onHamburgerLongPress: () => store.dispatch(StartGroupMultiselect()), onHamburgerLongPress: () => store.dispatch(StartGroupMultiselect()),
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey('__filter_${state.groupListState.filterClearedAt}__'),
entityType: EntityType.group, entityType: EntityType.group,
entityIds: viewModel.groupList, entityIds: viewModel.groupList,
filter: state.groupListState.filter, filter: state.groupListState.filter,

View File

@ -36,6 +36,7 @@ class InvoiceScreen extends StatelessWidget {
entityType: EntityType.invoice, entityType: EntityType.invoice,
onHamburgerLongPress: () => store.dispatch(StartInvoiceMultiselect()), onHamburgerLongPress: () => store.dispatch(StartInvoiceMultiselect()),
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey('__filter_${state.invoiceListState.filterClearedAt}__'),
entityType: EntityType.invoice, entityType: EntityType.invoice,
entityIds: viewModel.invoiceList, entityIds: viewModel.invoiceList,
filter: state.invoiceListState.filter, filter: state.invoiceListState.filter,

View File

@ -32,6 +32,7 @@ class PaymentScreen extends StatelessWidget {
entityType: EntityType.payment, entityType: EntityType.payment,
onHamburgerLongPress: () => store.dispatch(StartPaymentMultiselect()), onHamburgerLongPress: () => store.dispatch(StartPaymentMultiselect()),
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey('__filter_${state.paymentListState.filterClearedAt}__'),
entityType: EntityType.payment, entityType: EntityType.payment,
entityIds: viewModel.paymentList, entityIds: viewModel.paymentList,
filter: state.paymentListState.filter, filter: state.paymentListState.filter,

View File

@ -36,6 +36,8 @@ class PaymentTermScreen extends StatelessWidget {
onCancelSettingsSection: kSettingsCompanyDetails, onCancelSettingsSection: kSettingsCompanyDetails,
onCancelSettingsIndex: 3, onCancelSettingsIndex: 3,
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey(
'__filter_${state.paymentTermListState.filterClearedAt}__'),
entityType: EntityType.paymentTerm, entityType: EntityType.paymentTerm,
entityIds: viewModel.paymentTermList, entityIds: viewModel.paymentTermList,
filter: state.paymentTermListState.filter, filter: state.paymentTermListState.filter,

View File

@ -34,6 +34,7 @@ class ProductScreen extends StatelessWidget {
entityType: EntityType.product, entityType: EntityType.product,
onHamburgerLongPress: () => store.dispatch(StartProductMultiselect()), onHamburgerLongPress: () => store.dispatch(StartProductMultiselect()),
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey('__filter_${state.productListState.filterClearedAt}__'),
entityType: EntityType.product, entityType: EntityType.product,
entityIds: viewModel.productList, entityIds: viewModel.productList,
filter: state.productListState.filter, filter: state.productListState.filter,

View File

@ -34,6 +34,7 @@ class ProjectScreen extends StatelessWidget {
entityType: EntityType.project, entityType: EntityType.project,
onHamburgerLongPress: () => store.dispatch(StartProjectMultiselect()), onHamburgerLongPress: () => store.dispatch(StartProjectMultiselect()),
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey('__filter_${state.projectListState.filterClearedAt}__'),
entityType: EntityType.project, entityType: EntityType.project,
entityIds: viewModel.projectList, entityIds: viewModel.projectList,
filter: state.projectListState.filter, filter: state.projectListState.filter,

View File

@ -36,6 +36,7 @@ class QuoteScreen extends StatelessWidget {
entityType: EntityType.quote, entityType: EntityType.quote,
onHamburgerLongPress: () => store.dispatch(StartQuoteMultiselect()), onHamburgerLongPress: () => store.dispatch(StartQuoteMultiselect()),
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey('__filter_${state.quoteListState.filterClearedAt}__'),
entityType: EntityType.quote, entityType: EntityType.quote,
entityIds: viewModel.quoteList, entityIds: viewModel.quoteList,
filter: state.quoteListState.filter, filter: state.quoteListState.filter,

View File

@ -37,6 +37,8 @@ class RecurringInvoiceScreen extends StatelessWidget {
onHamburgerLongPress: () => onHamburgerLongPress: () =>
store.dispatch(StartRecurringInvoiceMultiselect()), store.dispatch(StartRecurringInvoiceMultiselect()),
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey(
'__filter_${state.recurringInvoiceListState.filterClearedAt}__'),
entityType: EntityType.recurringInvoice, entityType: EntityType.recurringInvoice,
entityIds: viewModel.recurringInvoiceList, entityIds: viewModel.recurringInvoiceList,
filter: state.recurringInvoiceListState.filter, filter: state.recurringInvoiceListState.filter,

View File

@ -38,6 +38,7 @@ class SubscriptionScreen extends StatelessWidget {
onHamburgerLongPress: () => onHamburgerLongPress: () =>
store.dispatch(StartSubscriptionMultiselect()), store.dispatch(StartSubscriptionMultiselect()),
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey('__filter_${state.subscriptionListState.filterClearedAt}__'),
entityType: EntityType.subscription, entityType: EntityType.subscription,
entityIds: viewModel.subscriptionList, entityIds: viewModel.subscriptionList,
filter: state.subscriptionListState.filter, filter: state.subscriptionListState.filter,

View File

@ -41,6 +41,7 @@ class TaskScreen extends StatelessWidget {
entityType: EntityType.task, entityType: EntityType.task,
onHamburgerLongPress: () => store.dispatch(StartTaskMultiselect()), onHamburgerLongPress: () => store.dispatch(StartTaskMultiselect()),
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey('__filter_${state.taskListState.filterClearedAt}__'),
entityType: EntityType.task, entityType: EntityType.task,
entityIds: viewModel.taskList, entityIds: viewModel.taskList,
filter: state.taskListState.filter, filter: state.taskListState.filter,

View File

@ -36,6 +36,8 @@ class TaskStatusScreen extends StatelessWidget {
onHamburgerLongPress: () => store.dispatch(StartTaskStatusMultiselect()), onHamburgerLongPress: () => store.dispatch(StartTaskStatusMultiselect()),
onCancelSettingsSection: kSettingsTasks, onCancelSettingsSection: kSettingsTasks,
appBarTitle: ListFilter( appBarTitle: ListFilter(
key:
ValueKey('__filter_${state.taskStatusListState.filterClearedAt}__'),
entityType: EntityType.taskStatus, entityType: EntityType.taskStatus,
entityIds: viewModel.taskStatusList, entityIds: viewModel.taskStatusList,
filter: state.taskStatusListState.filter, filter: state.taskStatusListState.filter,

View File

@ -33,6 +33,7 @@ class TaxRateSettingsScreen extends StatelessWidget {
onHamburgerLongPress: () => store.dispatch(StartTaxRateMultiselect()), onHamburgerLongPress: () => store.dispatch(StartTaxRateMultiselect()),
onCancelSettingsSection: kSettingsTaxSettings, onCancelSettingsSection: kSettingsTaxSettings,
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey('__filter_${state.taxRateListState.filterClearedAt}__'),
entityType: EntityType.taxRate, entityType: EntityType.taxRate,
entityIds: viewModel.taxRateList, entityIds: viewModel.taxRateList,
filter: state.taxRateListState.filter, filter: state.taxRateListState.filter,

View File

@ -37,6 +37,7 @@ class TokenScreen extends StatelessWidget {
onHamburgerLongPress: () => store.dispatch(StartTokenMultiselect()), onHamburgerLongPress: () => store.dispatch(StartTokenMultiselect()),
onCancelSettingsSection: kSettingsAccountManagement, onCancelSettingsSection: kSettingsAccountManagement,
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey('__filter_${state.tokenListState.filterClearedAt}__'),
entityType: EntityType.token, entityType: EntityType.token,
entityIds: viewModel.tokenList, entityIds: viewModel.tokenList,
filter: state.tokenListState.filter, filter: state.tokenListState.filter,

View File

@ -34,6 +34,7 @@ class UserScreen extends StatelessWidget {
entityType: EntityType.user, entityType: EntityType.user,
onHamburgerLongPress: () => store.dispatch(StartUserMultiselect()), onHamburgerLongPress: () => store.dispatch(StartUserMultiselect()),
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey('__filter_${state.userListState.filterClearedAt}__'),
entityType: EntityType.user, entityType: EntityType.user,
entityIds: viewModel.userList, entityIds: viewModel.userList,
filter: state.userListState.filter, filter: state.userListState.filter,

View File

@ -34,6 +34,7 @@ class VendorScreen extends StatelessWidget {
entityType: EntityType.vendor, entityType: EntityType.vendor,
onHamburgerLongPress: () => store.dispatch(StartVendorMultiselect()), onHamburgerLongPress: () => store.dispatch(StartVendorMultiselect()),
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey('__filter_${state.vendorListState.filterClearedAt}__'),
entityType: EntityType.vendor, entityType: EntityType.vendor,
entityIds: viewModel.vendorList, entityIds: viewModel.vendorList,
filter: state.vendorListState.filter, filter: state.vendorListState.filter,

View File

@ -36,6 +36,7 @@ class WebhookScreen extends StatelessWidget {
onHamburgerLongPress: () => store.dispatch(StartWebhookMultiselect()), onHamburgerLongPress: () => store.dispatch(StartWebhookMultiselect()),
onCancelSettingsSection: kSettingsAccountManagement, onCancelSettingsSection: kSettingsAccountManagement,
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey('__filter_${state.webhookListState.filterClearedAt}__'),
entityType: EntityType.webhook, entityType: EntityType.webhook,
entityIds: viewModel.webhookList, entityIds: viewModel.webhookList,
filter: state.webhookListState.filter, filter: state.webhookListState.filter,

View File

@ -85,8 +85,16 @@ final stubListReducer = combineReducers<ListUIState>([
TypedReducer<ListUIState, RemoveFromStubMultiselect>( TypedReducer<ListUIState, RemoveFromStubMultiselect>(
_removeFromListMultiselect), _removeFromListMultiselect),
TypedReducer<ListUIState, ClearStubMultiselect>(_clearListMultiselect), TypedReducer<ListUIState, ClearStubMultiselect>(_clearListMultiselect),
TypedReducer<ListUIState, ViewStubList>(_viewStubList),
]); ]);
ListUIState _viewStubList(
ListUIState stubListState, ViewStubList action) {
return stubListState.rebuild((b) => b
..filter = null
..filterClearedAt = DateTime.now().millisecondsSinceEpoch);
}
ListUIState _filterStubsByCustom1( ListUIState _filterStubsByCustom1(
ListUIState stubListState, FilterStubsByCustom1 action) { ListUIState stubListState, FilterStubsByCustom1 action) {
if (stubListState.custom1Filters.contains(action.value)) { if (stubListState.custom1Filters.contains(action.value)) {

View File

@ -36,6 +36,7 @@ class StubScreen extends StatelessWidget {
entityType: EntityType.stub, entityType: EntityType.stub,
onHamburgerLongPress: () => store.dispatch(StartStubMultiselect()), onHamburgerLongPress: () => store.dispatch(StartStubMultiselect()),
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey('__filter_${state.stubListState.filterClearedAt}__'),
entityType: EntityType.stub, entityType: EntityType.stub,
entityIds: viewModel.stubList, entityIds: viewModel.stubList,
filter: state.stubListState.filter, filter: state.stubListState.filter,