Improve filtering

This commit is contained in:
Hillel Coren 2021-04-19 22:50:49 +03:00
parent b3e6a0ebd4
commit 2ad0ed7022
26 changed files with 315 additions and 16 deletions

View File

@ -9,6 +9,7 @@ import 'package:invoiceninja_flutter/constants.dart';
import 'package:invoiceninja_flutter/data/models/account_model.dart';
import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/auth/auth_state.dart';
import 'package:invoiceninja_flutter/redux/client/client_reducer.dart';
import 'package:invoiceninja_flutter/redux/client/client_selectors.dart';
import 'package:invoiceninja_flutter/redux/client/client_state.dart';
import 'package:invoiceninja_flutter/redux/company/company_state.dart';
@ -400,7 +401,8 @@ abstract class AppState implements Built<AppState, AppStateBuilder> {
final entityUIState = getUIState(type);
return SelectionState(
selectedId: entityUIState.selectedId,
selectedId:
entityUIState.forceSelected == true ? entityUIState.selectedId : null,
filterEntityId: uiState.filterEntityId,
filterEntityType: uiState.filterEntityType,
);
@ -830,7 +832,8 @@ abstract class AppState implements Built<AppState, AppStateBuilder> {
//return 'FREQ: ${recurringInvoiceUIState.editing.frequencyId}';
//return '## Logs: ${company.systemLogs}';
return '\n\nURL: ${authState.url}'
return '\n\nForce: ${clientUIState.forceSelected}'
'\n\nURL: ${authState.url}'
'\nRoute: ${uiState.currentRoute}'
'\nPrevious: ${uiState.previousRoute}'
'\nPreview: ${uiState.previewStack}'
@ -852,8 +855,11 @@ class Credentials {
}
class SelectionState {
const SelectionState(
{this.selectedId, this.filterEntityId, this.filterEntityType});
const SelectionState({
this.selectedId,
this.filterEntityId,
this.filterEntityType,
});
final String selectedId;
final String filterEntityId;

View File

@ -8,6 +8,7 @@ import 'package:invoiceninja_flutter/redux/client/client_state.dart';
import 'package:invoiceninja_flutter/redux/company/company_actions.dart';
import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/ui_actions.dart';
import 'package:redux/redux.dart';
EntityUIState clientUIReducer(ClientUIState state, dynamic action) {
@ -17,11 +18,22 @@ EntityUIState clientUIReducer(ClientUIState state, dynamic action) {
..editingContact
.replace(editingContactReducer(state.editingContact, action))
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action)
..tabIndex = tabIndexReducer(state.tabIndex, action)
..saveCompleter = saveCompleterReducer(state.saveCompleter, action)
..cancelCompleter = cancelCompleterReducer(state.cancelCompleter, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewClient>((completer, action) => true),
TypedReducer<bool, FilterClientsByState>((completer, action) => false),
TypedReducer<bool, FilterClients>((completer, action) => false),
TypedReducer<bool, FilterClientsByCustom1>((completer, action) => false),
TypedReducer<bool, FilterClientsByCustom2>((completer, action) => false),
TypedReducer<bool, FilterClientsByCustom3>((completer, action) => false),
TypedReducer<bool, FilterClientsByCustom4>((completer, action) => false),
]);
final tabIndexReducer = combineReducers<int>([
TypedReducer<int, UpdateClientTab>((completer, action) {
return action.tabIndex;

View File

@ -14,9 +14,25 @@ EntityUIState companyGatewayUIReducer(
return state.rebuild((b) => b
..listUIState.replace(companyGatewayListReducer(state.listUIState, action))
..editing.replace(editingReducer(state.editing, action))
..selectedId = selectedIdReducer(state.selectedId, action));
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewCompanyGateway>((completer, action) => true),
TypedReducer<bool, FilterCompanyGatewaysByState>(
(completer, action) => false),
TypedReducer<bool, FilterCompanyGateways>((completer, action) => false),
TypedReducer<bool, FilterCompanyGatewaysByCustom1>(
(completer, action) => false),
TypedReducer<bool, FilterCompanyGatewaysByCustom2>(
(completer, action) => false),
TypedReducer<bool, FilterCompanyGatewaysByCustom3>(
(completer, action) => false),
TypedReducer<bool, FilterCompanyGatewaysByCustom4>(
(completer, action) => false),
]);
Reducer<String> selectedIdReducer = combineReducers([
TypedReducer<String, PreviewEntity>((selectedId, action) =>
action.entityType == EntityType.companyGateway

View File

@ -15,11 +15,22 @@ EntityUIState creditUIReducer(CreditUIState state, dynamic action) {
..editing.replace(editingReducer(state.editing, action))
..editingItemIndex = editingItemReducer(state.editingItemIndex, action)
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action)
..tabIndex = tabIndexReducer(state.tabIndex, action)
..historyActivityId =
historyActivityIdReducer(state.historyActivityId, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewCredit>((completer, action) => true),
TypedReducer<bool, FilterCreditsByState>((completer, action) => false),
TypedReducer<bool, FilterCredits>((completer, action) => false),
TypedReducer<bool, FilterCreditsByCustom1>((completer, action) => false),
TypedReducer<bool, FilterCreditsByCustom2>((completer, action) => false),
TypedReducer<bool, FilterCreditsByCustom3>((completer, action) => false),
TypedReducer<bool, FilterCreditsByCustom4>((completer, action) => false),
]);
final tabIndexReducer = combineReducers<int>([
TypedReducer<int, UpdateCreditTab>((completer, action) {
return action.tabIndex;

View File

@ -12,9 +12,20 @@ EntityUIState designUIReducer(DesignUIState state, dynamic action) {
return state.rebuild((b) => b
..listUIState.replace(designListReducer(state.listUIState, action))
..editing.replace(editingReducer(state.editing, action))
..selectedId = selectedIdReducer(state.selectedId, action));
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewDesign>((completer, action) => true),
TypedReducer<bool, FilterDesignsByState>((completer, action) => false),
TypedReducer<bool, FilterDesigns>((completer, action) => false),
TypedReducer<bool, FilterDesignsByCustom1>((completer, action) => false),
TypedReducer<bool, FilterDesignsByCustom2>((completer, action) => false),
TypedReducer<bool, FilterDesignsByCustom3>((completer, action) => false),
TypedReducer<bool, FilterDesignsByCustom4>((completer, action) => false),
]);
Reducer<String> selectedIdReducer = combineReducers([
TypedReducer<String, PreviewEntity>((selectedId, action) =>
action.entityType == EntityType.design ? action.entityId : selectedId),

View File

@ -12,9 +12,20 @@ EntityUIState documentUIReducer(DocumentUIState state, dynamic action) {
return state.rebuild((b) => b
..listUIState.replace(documentListReducer(state.listUIState, action))
..editing.replace(editingReducer(state.editing, action))
..selectedId = selectedIdReducer(state.selectedId, action));
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewDocument>((completer, action) => true),
TypedReducer<bool, FilterDocumentsByState>((completer, action) => false),
TypedReducer<bool, FilterDocuments>((completer, action) => false),
TypedReducer<bool, FilterDocumentsByCustom1>((completer, action) => false),
TypedReducer<bool, FilterDocumentsByCustom2>((completer, action) => false),
TypedReducer<bool, FilterDocumentsByCustom3>((completer, action) => false),
TypedReducer<bool, FilterDocumentsByCustom4>((completer, action) => false),
]);
Reducer<String> selectedIdReducer = combineReducers([
TypedReducer<String, PreviewEntity>((selectedId, action) =>
action.entityType == EntityType.document ? action.entityId : selectedId),

View File

@ -13,9 +13,20 @@ EntityUIState expenseUIReducer(ExpenseUIState state, dynamic action) {
..listUIState.replace(expenseListReducer(state.listUIState, action))
..editing.replace(editingReducer(state.editing, action))
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action)
..tabIndex = tabIndexReducer(state.tabIndex, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewExpense>((completer, action) => true),
TypedReducer<bool, FilterExpensesByState>((completer, action) => false),
TypedReducer<bool, FilterExpenses>((completer, action) => false),
TypedReducer<bool, FilterExpensesByCustom1>((completer, action) => false),
TypedReducer<bool, FilterExpensesByCustom2>((completer, action) => false),
TypedReducer<bool, FilterExpensesByCustom3>((completer, action) => false),
TypedReducer<bool, FilterExpensesByCustom4>((completer, action) => false),
]);
final tabIndexReducer = combineReducers<int>([
TypedReducer<int, UpdateExpenseTab>((completer, action) {
return action.tabIndex;

View File

@ -14,9 +14,25 @@ EntityUIState expenseCategoryUIReducer(
return state.rebuild((b) => b
..listUIState.replace(expenseCategoryListReducer(state.listUIState, action))
..editing.replace(editingReducer(state.editing, action))
..selectedId = selectedIdReducer(state.selectedId, action));
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewExpenseCategory>((completer, action) => true),
TypedReducer<bool, FilterExpenseCategoriesByState>(
(completer, action) => false),
TypedReducer<bool, FilterExpenseCategories>((completer, action) => false),
TypedReducer<bool, FilterExpenseCategoriesByCustom1>(
(completer, action) => false),
TypedReducer<bool, FilterExpenseCategoriesByCustom2>(
(completer, action) => false),
TypedReducer<bool, FilterExpenseCategoriesByCustom3>(
(completer, action) => false),
TypedReducer<bool, FilterExpenseCategoriesByCustom4>(
(completer, action) => false),
]);
Reducer<String> selectedIdReducer = combineReducers([
TypedReducer<String, PreviewEntity>((selectedId, action) =>
action.entityType == EntityType.expenseCategory

View File

@ -13,9 +13,18 @@ EntityUIState groupUIReducer(GroupUIState state, dynamic action) {
return state.rebuild((b) => b
..listUIState.replace(groupListReducer(state.listUIState, action))
..editing.replace(editingReducer(state.editing, action))
..selectedId = selectedIdReducer(state.selectedId, action));
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewGroup>((completer, action) => true),
TypedReducer<bool, FilterGroupsByState>((completer, action) => false),
TypedReducer<bool, FilterGroups>((completer, action) => false),
TypedReducer<bool, FilterGroupsByCustom1>((completer, action) => false),
TypedReducer<bool, FilterGroupsByCustom2>((completer, action) => false),
]);
Reducer<String> selectedIdReducer = combineReducers([
TypedReducer<String, PreviewEntity>((selectedId, action) =>
action.entityType == EntityType.group ? action.entityId : selectedId),

View File

@ -16,11 +16,22 @@ EntityUIState invoiceUIReducer(InvoiceUIState state, dynamic action) {
..editing.replace(editingReducer(state.editing, action))
..editingItemIndex = editingItemIndexReducer(state.editingItemIndex, action)
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action)
..tabIndex = tabIndexReducer(state.tabIndex, action)
..historyActivityId =
historyActivityIdReducer(state.historyActivityId, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewInvoice>((completer, action) => true),
TypedReducer<bool, FilterInvoicesByState>((completer, action) => false),
TypedReducer<bool, FilterInvoices>((completer, action) => false),
TypedReducer<bool, FilterInvoicesByCustom1>((completer, action) => false),
TypedReducer<bool, FilterInvoicesByCustom2>((completer, action) => false),
TypedReducer<bool, FilterInvoicesByCustom3>((completer, action) => false),
TypedReducer<bool, FilterInvoicesByCustom4>((completer, action) => false),
]);
final tabIndexReducer = combineReducers<int>([
TypedReducer<int, UpdateInvoiceTab>((completer, action) {
return action.tabIndex;

View File

@ -13,9 +13,20 @@ EntityUIState paymentUIReducer(PaymentUIState state, dynamic action) {
..listUIState.replace(paymentListReducer(state.listUIState, action))
..editing.replace(editingReducer(state.editing, action))
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action)
..tabIndex = tabIndexReducer(state.tabIndex, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewPayment>((completer, action) => true),
TypedReducer<bool, FilterPaymentsByState>((completer, action) => false),
TypedReducer<bool, FilterPayments>((completer, action) => false),
TypedReducer<bool, FilterPaymentsByCustom1>((completer, action) => false),
TypedReducer<bool, FilterPaymentsByCustom2>((completer, action) => false),
TypedReducer<bool, FilterPaymentsByCustom3>((completer, action) => false),
TypedReducer<bool, FilterPaymentsByCustom4>((completer, action) => false),
]);
final tabIndexReducer = combineReducers<int>([
TypedReducer<int, UpdatePaymentTab>((completer, action) {
return action.tabIndex;

View File

@ -13,9 +13,20 @@ EntityUIState paymentTermUIReducer(PaymentTermUIState state, dynamic action) {
return state.rebuild((b) => b
..listUIState.replace(paymentTermListReducer(state.listUIState, action))
..editing.replace(editingReducer(state.editing, action))
..selectedId = selectedIdReducer(state.selectedId, action));
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewPaymentTerm>((completer, action) => true),
TypedReducer<bool, FilterPaymentTermsByState>((completer, action) => false),
TypedReducer<bool, FilterPaymentTerms>((completer, action) => false),
TypedReducer<bool, FilterPaymentTermsByCustom1>((completer, action) => false),
TypedReducer<bool, FilterPaymentTermsByCustom2>((completer, action) => false),
TypedReducer<bool, FilterPaymentTermsByCustom3>((completer, action) => false),
TypedReducer<bool, FilterPaymentTermsByCustom4>((completer, action) => false),
]);
Reducer<String> selectedIdReducer = combineReducers([
TypedReducer<String, PreviewEntity>((selectedId, action) =>
action.entityType == EntityType.paymentTerm

View File

@ -14,9 +14,20 @@ EntityUIState productUIReducer(ProductUIState state, dynamic action) {
..listUIState.replace(productListReducer(state.listUIState, action))
..editing.replace(editingReducer(state.editing, action))
..tabIndex = tabIndexReducer(state.tabIndex, action)
..selectedId = selectedIdReducer(state.selectedId, action));
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewProduct>((completer, action) => true),
TypedReducer<bool, FilterProductsByState>((completer, action) => false),
TypedReducer<bool, FilterProducts>((completer, action) => false),
TypedReducer<bool, FilterProductsByCustom1>((completer, action) => false),
TypedReducer<bool, FilterProductsByCustom2>((completer, action) => false),
TypedReducer<bool, FilterProductsByCustom3>((completer, action) => false),
TypedReducer<bool, FilterProductsByCustom4>((completer, action) => false),
]);
final tabIndexReducer = combineReducers<int>([
TypedReducer<int, UpdateProductTab>((completer, action) {
return action.tabIndex;

View File

@ -15,11 +15,22 @@ EntityUIState projectUIReducer(ProjectUIState state, dynamic action) {
..listUIState.replace(projectListReducer(state.listUIState, action))
..editing.replace(editingReducer(state.editing, action))
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action)
..tabIndex = tabIndexReducer(state.tabIndex, action)
..saveCompleter = saveCompleterReducer(state.saveCompleter, action)
..cancelCompleter = cancelCompleterReducer(state.cancelCompleter, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewProject>((completer, action) => true),
TypedReducer<bool, FilterProjectsByState>((completer, action) => false),
TypedReducer<bool, FilterProjects>((completer, action) => false),
TypedReducer<bool, FilterProjectsByCustom1>((completer, action) => false),
TypedReducer<bool, FilterProjectsByCustom2>((completer, action) => false),
TypedReducer<bool, FilterProjectsByCustom3>((completer, action) => false),
TypedReducer<bool, FilterProjectsByCustom4>((completer, action) => false),
]);
final tabIndexReducer = combineReducers<int>([
TypedReducer<int, UpdateProjectTab>((completer, action) {
return action.tabIndex;

View File

@ -16,11 +16,22 @@ EntityUIState quoteUIReducer(QuoteUIState state, dynamic action) {
..editing.replace(editingReducer(state.editing, action))
..editingItemIndex = editingItemReducer(state.editingItemIndex, action)
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action)
..tabIndex = tabIndexReducer(state.tabIndex, action)
..historyActivityId =
historyActivityIdReducer(state.historyActivityId, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewQuote>((completer, action) => true),
TypedReducer<bool, FilterQuotesByState>((completer, action) => false),
TypedReducer<bool, FilterQuotes>((completer, action) => false),
TypedReducer<bool, FilterQuotesByCustom1>((completer, action) => false),
TypedReducer<bool, FilterQuotesByCustom2>((completer, action) => false),
TypedReducer<bool, FilterQuotesByCustom3>((completer, action) => false),
TypedReducer<bool, FilterQuotesByCustom4>((completer, action) => false),
]);
final tabIndexReducer = combineReducers<int>([
TypedReducer<int, UpdateQuoteTab>((completer, action) {
return action.tabIndex;

View File

@ -17,11 +17,27 @@ EntityUIState recurringInvoiceUIReducer(
..editing.replace(editingReducer(state.editing, action))
..editingItemIndex = editingItemIndexReducer(state.editingItemIndex, action)
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action)
..tabIndex = tabIndexReducer(state.tabIndex, action)
..historyActivityId =
historyActivityIdReducer(state.historyActivityId, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewRecurringInvoice>((completer, action) => true),
TypedReducer<bool, FilterRecurringInvoicesByState>(
(completer, action) => false),
TypedReducer<bool, FilterRecurringInvoices>((completer, action) => false),
TypedReducer<bool, FilterRecurringInvoicesByCustom1>(
(completer, action) => false),
TypedReducer<bool, FilterRecurringInvoicesByCustom2>(
(completer, action) => false),
TypedReducer<bool, FilterRecurringInvoicesByCustom3>(
(completer, action) => false),
TypedReducer<bool, FilterRecurringInvoicesByCustom4>(
(completer, action) => false),
]);
final tabIndexReducer = combineReducers<int>([
TypedReducer<int, UpdateRecurringInvoiceTab>((completer, action) {
return action.tabIndex;

View File

@ -14,9 +14,24 @@ EntityUIState subscriptionUIReducer(SubscriptionUIState state, dynamic action) {
..listUIState.replace(subscriptionListReducer(state.listUIState, action))
..editing.replace(editingReducer(state.editing, action))
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action)
..tabIndex = tabIndexReducer(state.tabIndex, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewSubscription>((completer, action) => true),
TypedReducer<bool, FilterSubscriptionsByState>((completer, action) => false),
TypedReducer<bool, FilterSubscriptions>((completer, action) => false),
TypedReducer<bool, FilterSubscriptionsByCustom1>(
(completer, action) => false),
TypedReducer<bool, FilterSubscriptionsByCustom2>(
(completer, action) => false),
TypedReducer<bool, FilterSubscriptionsByCustom3>(
(completer, action) => false),
TypedReducer<bool, FilterSubscriptionsByCustom4>(
(completer, action) => false),
]);
final tabIndexReducer = combineReducers<int>([
TypedReducer<int, UpdateSubscriptionTab>((completer, action) {
return action.tabIndex;

View File

@ -14,9 +14,20 @@ EntityUIState taskUIReducer(TaskUIState state, dynamic action) {
..editing.replace(editingReducer(state.editing, action))
..editingTimeIndex = editingTimeReducer(state.editingTimeIndex, action)
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action)
..tabIndex = tabIndexReducer(state.tabIndex, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewTask>((completer, action) => true),
TypedReducer<bool, FilterTasksByState>((completer, action) => false),
TypedReducer<bool, FilterTasks>((completer, action) => false),
TypedReducer<bool, FilterTasksByCustom1>((completer, action) => false),
TypedReducer<bool, FilterTasksByCustom2>((completer, action) => false),
TypedReducer<bool, FilterTasksByCustom3>((completer, action) => false),
TypedReducer<bool, FilterTasksByCustom4>((completer, action) => false),
]);
final tabIndexReducer = combineReducers<int>([
TypedReducer<int, UpdateTaskTab>((completer, action) {
return action.tabIndex;

View File

@ -14,9 +14,20 @@ EntityUIState taskStatusUIReducer(TaskStatusUIState state, dynamic action) {
return state.rebuild((b) => b
..listUIState.replace(taskStatusListReducer(state.listUIState, action))
..editing.replace(editingReducer(state.editing, action))
..selectedId = selectedIdReducer(state.selectedId, action));
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewTaskStatus>((completer, action) => true),
TypedReducer<bool, FilterTaskStatusesByState>((completer, action) => false),
TypedReducer<bool, FilterTaskStatuses>((completer, action) => false),
TypedReducer<bool, FilterTaskStatusesByCustom1>((completer, action) => false),
TypedReducer<bool, FilterTaskStatusesByCustom2>((completer, action) => false),
TypedReducer<bool, FilterTaskStatusesByCustom3>((completer, action) => false),
TypedReducer<bool, FilterTaskStatusesByCustom4>((completer, action) => false),
]);
Reducer<String> selectedIdReducer = combineReducers([
TypedReducer<String, PreviewEntity>((selectedId, action) =>
action.entityType == EntityType.taskStatus

View File

@ -12,9 +12,18 @@ EntityUIState taxRateUIReducer(TaxRateUIState state, dynamic action) {
return state.rebuild((b) => b
..listUIState.replace(taxRateListReducer(state.listUIState, action))
..editing.replace(editingReducer(state.editing, action))
..selectedId = selectedIdReducer(state.selectedId, action));
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewTaxRate>((completer, action) => true),
TypedReducer<bool, FilterTaxRatesByState>((completer, action) => false),
TypedReducer<bool, FilterTaxRates>((completer, action) => false),
TypedReducer<bool, FilterTaxRatesByCustom1>((completer, action) => false),
TypedReducer<bool, FilterTaxRatesByCustom2>((completer, action) => false),
]);
Reducer<String> selectedIdReducer = combineReducers([
TypedReducer<String, PreviewEntity>((selectedId, action) =>
action.entityType == EntityType.taxRate ? action.entityId : selectedId),

View File

@ -13,9 +13,20 @@ EntityUIState tokenUIReducer(TokenUIState state, dynamic action) {
return state.rebuild((b) => b
..listUIState.replace(tokenListReducer(state.listUIState, action))
..editing.replace(editingReducer(state.editing, action))
..selectedId = selectedIdReducer(state.selectedId, action));
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewToken>((completer, action) => true),
TypedReducer<bool, FilterTokensByState>((completer, action) => false),
TypedReducer<bool, FilterTokens>((completer, action) => false),
TypedReducer<bool, FilterTokensByCustom1>((completer, action) => false),
TypedReducer<bool, FilterTokensByCustom2>((completer, action) => false),
TypedReducer<bool, FilterTokensByCustom3>((completer, action) => false),
TypedReducer<bool, FilterTokensByCustom4>((completer, action) => false),
]);
Reducer<String> selectedIdReducer = combineReducers([
TypedReducer<String, PreviewEntity>((selectedId, action) =>
action.entityType == EntityType.token ? action.entityId : selectedId),

View File

@ -314,6 +314,18 @@ class FilterUsersByCustom2 implements PersistUI {
final String value;
}
class FilterUsersByCustom3 implements PersistUI {
FilterUsersByCustom3(this.value);
final String value;
}
class FilterUsersByCustom4 implements PersistUI {
FilterUsersByCustom4(this.value);
final String value;
}
void handleUserAction(
BuildContext context, List<BaseEntity> users, EntityAction action) {
if (users.isEmpty) {

View File

@ -14,9 +14,20 @@ EntityUIState userUIReducer(UserUIState state, dynamic action) {
return state.rebuild((b) => b
..listUIState.replace(userListReducer(state.listUIState, action))
..editing.replace(editingReducer(state.editing, action))
..selectedId = selectedIdReducer(state.selectedId, action));
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewUser>((completer, action) => true),
TypedReducer<bool, FilterUsersByState>((completer, action) => false),
TypedReducer<bool, FilterUsers>((completer, action) => false),
TypedReducer<bool, FilterUsersByCustom1>((completer, action) => false),
TypedReducer<bool, FilterUsersByCustom2>((completer, action) => false),
TypedReducer<bool, FilterUsersByCustom3>((completer, action) => false),
TypedReducer<bool, FilterUsersByCustom4>((completer, action) => false),
]);
Reducer<String> selectedIdReducer = combineReducers([
TypedReducer<String, PreviewEntity>((selectedId, action) =>
action.entityType == EntityType.user ? action.entityId : selectedId),

View File

@ -17,11 +17,22 @@ EntityUIState vendorUIReducer(VendorUIState state, dynamic action) {
..editingContact
.replace(editingVendorContactReducer(state.editingContact, action))
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action)
..tabIndex = tabIndexReducer(state.tabIndex, action)
..saveCompleter = saveCompleterReducer(state.saveCompleter, action)
..cancelCompleter = cancelCompleterReducer(state.cancelCompleter, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewVendor>((completer, action) => true),
TypedReducer<bool, FilterVendorsByState>((completer, action) => false),
TypedReducer<bool, FilterVendors>((completer, action) => false),
TypedReducer<bool, FilterVendorsByCustom1>((completer, action) => false),
TypedReducer<bool, FilterVendorsByCustom2>((completer, action) => false),
TypedReducer<bool, FilterVendorsByCustom3>((completer, action) => false),
TypedReducer<bool, FilterVendorsByCustom4>((completer, action) => false),
]);
final tabIndexReducer = combineReducers<int>([
TypedReducer<int, UpdateVendorTab>((completer, action) {
return action.tabIndex;

View File

@ -13,9 +13,20 @@ EntityUIState webhookUIReducer(WebhookUIState state, dynamic action) {
return state.rebuild((b) => b
..listUIState.replace(webhookListReducer(state.listUIState, action))
..editing.replace(editingReducer(state.editing, action))
..selectedId = selectedIdReducer(state.selectedId, action));
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action));
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewWebhook>((completer, action) => true),
TypedReducer<bool, FilterWebhooksByState>((completer, action) => false),
TypedReducer<bool, FilterWebhooks>((completer, action) => false),
TypedReducer<bool, FilterWebhooksByCustom1>((completer, action) => false),
TypedReducer<bool, FilterWebhooksByCustom2>((completer, action) => false),
TypedReducer<bool, FilterWebhooksByCustom3>((completer, action) => false),
TypedReducer<bool, FilterWebhooksByCustom4>((completer, action) => false),
]);
Reducer<String> selectedIdReducer = combineReducers([
TypedReducer<String, PreviewEntity>((selectedId, action) =>
action.entityType == EntityType.webhook ? action.entityId : selectedId),

View File

@ -14,10 +14,22 @@ EntityUIState stubUIReducer(StubUIState state, dynamic action) {
..listUIState.replace(stubListReducer(state.listUIState, action))
..editing.replace(editingReducer(state.editing, action))
..selectedId = selectedIdReducer(state.selectedId, action)
..forceSelected = forceSelectedReducer(state.forceSelected, action)
..tabIndex = tabIndexReducer(state.tabIndex, action)
);
}
final forceSelectedReducer = combineReducers<bool>([
TypedReducer<bool, ViewStub>((completer, action) => true),
TypedReducer<bool, FilterStubsByState>((completer, action) => false),
TypedReducer<bool, FilterStubs>((completer, action) => false),
TypedReducer<bool, FilterStubsByCustom1>((completer, action) => false),
TypedReducer<bool, FilterStubsByCustom2>((completer, action) => false),
TypedReducer<bool, FilterStubsByCustom3>((completer, action) => false),
TypedReducer<bool, FilterStubsByCustom4>((completer, action) => false),
]);
final tabIndexReducer = combineReducers<int>([
TypedReducer<int, UpdateStubTab>((completer, action) {
return action.tabIndex;