Added SelectionState changes to remaining modules

This commit is contained in:
Gianfranco Gasbarri 2021-02-17 23:12:53 +00:00
parent c5bcb5b344
commit 200e7488b4
30 changed files with 137 additions and 103 deletions

View File

@ -1,4 +1,5 @@
import 'package:invoiceninja_flutter/data/models/group_model.dart'; import 'package:invoiceninja_flutter/data/models/group_model.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/redux/static/static_state.dart'; import 'package:invoiceninja_flutter/redux/static/static_state.dart';
import 'package:memoize/memoize.dart'; import 'package:memoize/memoize.dart';
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
@ -28,30 +29,36 @@ List<String> dropdownClientsSelector(
return list; return list;
} }
var memoizedFilteredClientList = memo8((String filterEntityId, var memoizedFilteredClientList = memo7((SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, ClientEntity> clientMap, BuiltMap<String, ClientEntity> clientMap,
BuiltList<String> clientList, BuiltList<String> clientList,
BuiltMap<String, GroupEntity> groupMap, BuiltMap<String, GroupEntity> groupMap,
ListUIState clientListState, ListUIState clientListState,
BuiltMap<String, UserEntity> userMap, BuiltMap<String, UserEntity> userMap,
StaticState staticState) => StaticState staticState) =>
filteredClientsSelector(filterEntityId, filterEntityType, clientMap, filteredClientsSelector(selectionState, clientMap, clientList, groupMap,
clientList, groupMap, clientListState, userMap, staticState)); clientListState, userMap, staticState));
List<String> filteredClientsSelector( List<String> filteredClientsSelector(
String filterEntityId, SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, ClientEntity> clientMap, BuiltMap<String, ClientEntity> clientMap,
BuiltList<String> clientList, BuiltList<String> clientList,
BuiltMap<String, GroupEntity> groupMap, BuiltMap<String, GroupEntity> groupMap,
ListUIState clientListState, ListUIState clientListState,
BuiltMap<String, UserEntity> userMap, BuiltMap<String, UserEntity> userMap,
StaticState staticState) { StaticState staticState) {
final filterEntityId = selectionState.filterEntityId;
final filterEntityType = selectionState.filterEntityType;
final list = clientList.where((clientId) { final list = clientList.where((clientId) {
final client = clientMap[clientId]; final client = clientMap[clientId];
final group = groupMap[client.groupId] ?? GroupEntity(id: client.groupId); final group = groupMap[client.groupId] ?? GroupEntity(id: client.groupId);
if (client.id == selectionState.selectedId) {
return true;
}
if (filterEntityType == EntityType.group && group.id != filterEntityId) { if (filterEntityType == EntityType.group && group.id != filterEntityId) {
return false; return false;
} else if (filterEntityType == EntityType.user && } else if (filterEntityType == EntityType.user &&

View File

@ -1,3 +1,4 @@
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/redux/static/static_state.dart'; import 'package:invoiceninja_flutter/redux/static/static_state.dart';
import 'package:memoize/memoize.dart'; import 'package:memoize/memoize.dart';
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
@ -63,31 +64,36 @@ ClientEntity creditClientSelector(
return clientMap[credit.clientId]; return clientMap[credit.clientId];
} }
var memoizedFilteredCreditList = memo8((String filterEntityId, var memoizedFilteredCreditList = memo7((SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, InvoiceEntity> creditMap, BuiltMap<String, InvoiceEntity> creditMap,
BuiltList<String> creditList, BuiltList<String> creditList,
BuiltMap<String, ClientEntity> clientMap, BuiltMap<String, ClientEntity> clientMap,
ListUIState creditListState, ListUIState creditListState,
StaticState staticState, StaticState staticState,
BuiltMap<String, UserEntity> userMap) => BuiltMap<String, UserEntity> userMap) =>
filteredCreditsSelector(filterEntityId, filterEntityType, creditMap, filteredCreditsSelector(selectionState, creditMap, creditList, clientMap,
creditList, clientMap, creditListState, staticState, userMap)); creditListState, staticState, userMap));
List<String> filteredCreditsSelector( List<String> filteredCreditsSelector(
String filterEntityId, SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, InvoiceEntity> creditMap, BuiltMap<String, InvoiceEntity> creditMap,
BuiltList<String> creditList, BuiltList<String> creditList,
BuiltMap<String, ClientEntity> clientMap, BuiltMap<String, ClientEntity> clientMap,
ListUIState creditListState, ListUIState creditListState,
StaticState staticState, StaticState staticState,
BuiltMap<String, UserEntity> userMap) { BuiltMap<String, UserEntity> userMap) {
final filterEntityId = selectionState.filterEntityId;
final filterEntityType = selectionState.filterEntityType;
final list = creditList.where((creditId) { final list = creditList.where((creditId) {
final credit = creditMap[creditId]; final credit = creditMap[creditId];
final client = final client =
clientMap[credit.clientId] ?? ClientEntity(id: credit.clientId); clientMap[credit.clientId] ?? ClientEntity(id: credit.clientId);
if (credit.id == selectionState.selectedId) {
return true;
}
if (!client.isActive && if (!client.isActive &&
!client.matchesEntityFilter(filterEntityType, filterEntityId)) { !client.matchesEntityFilter(filterEntityType, filterEntityId)) {
return false; return false;

View File

@ -1,4 +1,5 @@
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/redux/static/static_state.dart'; import 'package:invoiceninja_flutter/redux/static/static_state.dart';
import 'package:memoize/memoize.dart'; import 'package:memoize/memoize.dart';
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
@ -81,8 +82,7 @@ List<String> dropdownExpensesSelector(
return list; return list;
} }
var memoizedFilteredExpenseList = memo10((String filterEntityId, var memoizedFilteredExpenseList = memo9((SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, ExpenseEntity> expenseMap, BuiltMap<String, ExpenseEntity> expenseMap,
BuiltMap<String, ClientEntity> clientMap, BuiltMap<String, ClientEntity> clientMap,
BuiltMap<String, VendorEntity> vendorMap, BuiltMap<String, VendorEntity> vendorMap,
@ -92,8 +92,7 @@ var memoizedFilteredExpenseList = memo10((String filterEntityId,
BuiltMap<String, ExpenseCategoryEntity> expenseCategoryMap, BuiltMap<String, ExpenseCategoryEntity> expenseCategoryMap,
StaticState staticState) => StaticState staticState) =>
filteredExpensesSelector( filteredExpensesSelector(
filterEntityId, selectionState,
filterEntityType,
expenseMap, expenseMap,
clientMap, clientMap,
vendorMap, vendorMap,
@ -104,8 +103,7 @@ var memoizedFilteredExpenseList = memo10((String filterEntityId,
staticState)); staticState));
List<String> filteredExpensesSelector( List<String> filteredExpensesSelector(
String filterEntityId, SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, ExpenseEntity> expenseMap, BuiltMap<String, ExpenseEntity> expenseMap,
BuiltMap<String, ClientEntity> clientMap, BuiltMap<String, ClientEntity> clientMap,
BuiltMap<String, VendorEntity> vendorMap, BuiltMap<String, VendorEntity> vendorMap,
@ -114,6 +112,9 @@ List<String> filteredExpensesSelector(
BuiltMap<String, InvoiceEntity> invoiceMap, BuiltMap<String, InvoiceEntity> invoiceMap,
BuiltMap<String, ExpenseCategoryEntity> expenseCategoryMap, BuiltMap<String, ExpenseCategoryEntity> expenseCategoryMap,
StaticState staticState) { StaticState staticState) {
final filterEntityId = selectionState.filterEntityId;
final filterEntityType = selectionState.filterEntityType;
final list = expenseMap.keys.where((expenseId) { final list = expenseMap.keys.where((expenseId) {
final expense = expenseMap[expenseId]; final expense = expenseMap[expenseId];
final vendor = final vendor =
@ -121,6 +122,10 @@ List<String> filteredExpensesSelector(
final client = final client =
clientMap[expense.clientId] ?? ClientEntity(id: expense.clientId); clientMap[expense.clientId] ?? ClientEntity(id: expense.clientId);
if (expense.id == selectionState.selectedId) {
return true;
}
if (filterEntityType != null) { if (filterEntityType != null) {
if (filterEntityType == EntityType.client && if (filterEntityType == EntityType.client &&
expense.clientId != filterEntityId) { expense.clientId != filterEntityId) {

View File

@ -1,3 +1,4 @@
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:memoize/memoize.dart'; import 'package:memoize/memoize.dart';
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
@ -65,26 +66,27 @@ List<String> dropdownPaymentsSelector(
return list; return list;
} }
var memoizedFilteredPaymentList = memo8((String filterEntityId, var memoizedFilteredPaymentList = memo7((SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, PaymentEntity> paymentMap, BuiltMap<String, PaymentEntity> paymentMap,
BuiltList<String> paymentList, BuiltList<String> paymentList,
BuiltMap<String, InvoiceEntity> invoiceMap, BuiltMap<String, InvoiceEntity> invoiceMap,
BuiltMap<String, ClientEntity> clientMap, BuiltMap<String, ClientEntity> clientMap,
BuiltMap<String, UserEntity> userMap, BuiltMap<String, UserEntity> userMap,
ListUIState paymentListState) => ListUIState paymentListState) =>
filteredPaymentsSelector(filterEntityId, filterEntityType, paymentMap, filteredPaymentsSelector(selectionState, paymentMap, paymentList,
paymentList, invoiceMap, clientMap, userMap, paymentListState)); invoiceMap, clientMap, userMap, paymentListState));
List<String> filteredPaymentsSelector( List<String> filteredPaymentsSelector(
String filterEntityId, SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, PaymentEntity> paymentMap, BuiltMap<String, PaymentEntity> paymentMap,
BuiltList<String> paymentList, BuiltList<String> paymentList,
BuiltMap<String, InvoiceEntity> invoiceMap, BuiltMap<String, InvoiceEntity> invoiceMap,
BuiltMap<String, ClientEntity> clientMap, BuiltMap<String, ClientEntity> clientMap,
BuiltMap<String, UserEntity> userMap, BuiltMap<String, UserEntity> userMap,
ListUIState paymentListState) { ListUIState paymentListState) {
final filterEntityId = selectionState.filterEntityId;
final filterEntityType = selectionState.filterEntityType;
final list = paymentList.where((paymentId) { final list = paymentList.where((paymentId) {
final payment = paymentMap[paymentId]; final payment = paymentMap[paymentId];
if (!payment.matchesStates(paymentListState.stateFilters)) { if (!payment.matchesStates(paymentListState.stateFilters)) {
@ -94,6 +96,10 @@ List<String> filteredPaymentsSelector(
final client = final client =
clientMap[payment.clientId] ?? ClientEntity(id: payment.clientId); clientMap[payment.clientId] ?? ClientEntity(id: payment.clientId);
if (payment.id == selectionState.selectedId) {
return true;
}
if (!client.isActive && if (!client.isActive &&
!client.matchesEntityFilter(filterEntityType, filterEntityId)) { !client.matchesEntityFilter(filterEntityType, filterEntityId)) {
return false; return false;

View File

@ -64,24 +64,25 @@ List<String> dropdownProjectsSelector(
return list; return list;
} }
var memoizedFilteredProjectList = memo7((String filterEntityId, var memoizedFilteredProjectList = memo6((SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, ProjectEntity> projectMap, BuiltMap<String, ProjectEntity> projectMap,
BuiltList<String> projectList, BuiltList<String> projectList,
ListUIState projectListState, ListUIState projectListState,
BuiltMap<String, ClientEntity> clientMap, BuiltMap<String, ClientEntity> clientMap,
BuiltMap<String, UserEntity> userMap) => BuiltMap<String, UserEntity> userMap) =>
filteredProjectsSelector(filterEntityId, filterEntityType, projectMap, filteredProjectsSelector(selectionState, projectMap, projectList,
projectList, projectListState, clientMap, userMap)); projectListState, clientMap, userMap));
List<String> filteredProjectsSelector( List<String> filteredProjectsSelector(
String filterEntityId, SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, ProjectEntity> projectMap, BuiltMap<String, ProjectEntity> projectMap,
BuiltList<String> projectList, BuiltList<String> projectList,
ListUIState projectListState, ListUIState projectListState,
BuiltMap<String, ClientEntity> clientMap, BuiltMap<String, ClientEntity> clientMap,
BuiltMap<String, UserEntity> userMap) { BuiltMap<String, UserEntity> userMap) {
final filterEntityId = selectionState.filterEntityId;
final filterEntityType = selectionState.filterEntityType;
final list = projectList.where((projectId) { final list = projectList.where((projectId) {
final project = projectMap[projectId]; final project = projectMap[projectId];
final client = final client =
@ -89,6 +90,10 @@ List<String> filteredProjectsSelector(
final user = userMap[project.assignedUserId] ?? final user = userMap[project.assignedUserId] ??
UserEntity(id: project.assignedUserId); UserEntity(id: project.assignedUserId);
if (project.id == selectionState.selectedId) {
return true;
}
if (filterEntityId != null) { if (filterEntityId != null) {
if (filterEntityType == EntityType.client && if (filterEntityType == EntityType.client &&
!client.matchesEntityFilter(filterEntityType, filterEntityId)) { !client.matchesEntityFilter(filterEntityType, filterEntityId)) {

View File

@ -1,3 +1,4 @@
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/redux/static/static_state.dart'; import 'package:invoiceninja_flutter/redux/static/static_state.dart';
import 'package:memoize/memoize.dart'; import 'package:memoize/memoize.dart';
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
@ -9,31 +10,36 @@ ClientEntity quoteClientSelector(
return clientMap[quote.clientId]; return clientMap[quote.clientId];
} }
var memoizedFilteredQuoteList = memo8((String filterEntityId, var memoizedFilteredQuoteList = memo7((SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, InvoiceEntity> quoteMap, BuiltMap<String, InvoiceEntity> quoteMap,
BuiltList<String> quoteList, BuiltList<String> quoteList,
BuiltMap<String, ClientEntity> clientMap, BuiltMap<String, ClientEntity> clientMap,
ListUIState quoteListState, ListUIState quoteListState,
StaticState staticState, StaticState staticState,
BuiltMap<String, UserEntity> userMap) => BuiltMap<String, UserEntity> userMap) =>
filteredQuotesSelector(filterEntityId, filterEntityType, quoteMap, filteredQuotesSelector(selectionState, quoteMap, quoteList, clientMap,
quoteList, clientMap, quoteListState, staticState, userMap)); quoteListState, staticState, userMap));
List<String> filteredQuotesSelector( List<String> filteredQuotesSelector(
String filterEntityId, SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, InvoiceEntity> quoteMap, BuiltMap<String, InvoiceEntity> quoteMap,
BuiltList<String> quoteList, BuiltList<String> quoteList,
BuiltMap<String, ClientEntity> clientMap, BuiltMap<String, ClientEntity> clientMap,
ListUIState quoteListState, ListUIState quoteListState,
StaticState staticState, StaticState staticState,
BuiltMap<String, UserEntity> userMap) { BuiltMap<String, UserEntity> userMap) {
final filterEntityId = selectionState.filterEntityId;
final filterEntityType = selectionState.filterEntityType;
final list = quoteList.where((quoteId) { final list = quoteList.where((quoteId) {
final quote = quoteMap[quoteId]; final quote = quoteMap[quoteId];
final client = final client =
clientMap[quote.clientId] ?? ClientEntity(id: quote.clientId); clientMap[quote.clientId] ?? ClientEntity(id: quote.clientId);
if (quote.id == selectionState.selectedId) {
return true;
}
if (!client.isActive && if (!client.isActive &&
!client.matchesEntityFilter(filterEntityType, filterEntityId)) { !client.matchesEntityFilter(filterEntityType, filterEntityId)) {
return false; return false;

View File

@ -1,13 +1,13 @@
import 'package:invoiceninja_flutter/data/models/invoice_model.dart'; import 'package:invoiceninja_flutter/data/models/invoice_model.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/redux/static/static_state.dart'; import 'package:invoiceninja_flutter/redux/static/static_state.dart';
import 'package:memoize/memoize.dart'; import 'package:memoize/memoize.dart';
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart';
var memoizedFilteredRecurringInvoiceList = memo8(( var memoizedFilteredRecurringInvoiceList = memo7((
String filterEntityId, SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, InvoiceEntity> recurringInvoiceMap, BuiltMap<String, InvoiceEntity> recurringInvoiceMap,
BuiltMap<String, ClientEntity> clientMap, BuiltMap<String, ClientEntity> clientMap,
BuiltList<String> recurringInvoiceList, BuiltList<String> recurringInvoiceList,
@ -16,8 +16,7 @@ var memoizedFilteredRecurringInvoiceList = memo8((
BuiltMap<String, UserEntity> userMap, BuiltMap<String, UserEntity> userMap,
) => ) =>
filteredRecurringInvoicesSelector( filteredRecurringInvoicesSelector(
filterEntityId, selectionState,
filterEntityType,
recurringInvoiceMap, recurringInvoiceMap,
clientMap, clientMap,
recurringInvoiceList, recurringInvoiceList,
@ -27,8 +26,7 @@ var memoizedFilteredRecurringInvoiceList = memo8((
)); ));
List<String> filteredRecurringInvoicesSelector( List<String> filteredRecurringInvoicesSelector(
String filterEntityId, SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, InvoiceEntity> recurringInvoiceMap, BuiltMap<String, InvoiceEntity> recurringInvoiceMap,
BuiltMap<String, ClientEntity> clientMap, BuiltMap<String, ClientEntity> clientMap,
BuiltList<String> recurringInvoiceList, BuiltList<String> recurringInvoiceList,
@ -36,11 +34,18 @@ List<String> filteredRecurringInvoicesSelector(
StaticState staticState, StaticState staticState,
BuiltMap<String, UserEntity> userMap, BuiltMap<String, UserEntity> userMap,
) { ) {
final filterEntityId = selectionState.filterEntityId;
final filterEntityType = selectionState.filterEntityType;
final list = recurringInvoiceList.where((recurringInvoiceId) { final list = recurringInvoiceList.where((recurringInvoiceId) {
final invoice = recurringInvoiceMap[recurringInvoiceId]; final invoice = recurringInvoiceMap[recurringInvoiceId];
final client = final client =
clientMap[invoice.clientId] ?? ClientEntity(id: invoice.clientId); clientMap[invoice.clientId] ?? ClientEntity(id: invoice.clientId);
if (invoice.id == selectionState.selectedId) {
return true;
}
if (!client.isActive && if (!client.isActive &&
!client.matchesEntityFilter(filterEntityType, filterEntityId)) { !client.matchesEntityFilter(filterEntityType, filterEntityId)) {
return false; return false;

View File

@ -104,8 +104,7 @@ List<String> dropdownTasksSelector(
return list; return list;
} }
var memoizedFilteredTaskList = memo9((String filterEntityId, var memoizedFilteredTaskList = memo8((SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, TaskEntity> taskMap, BuiltMap<String, TaskEntity> taskMap,
BuiltMap<String, ClientEntity> clientMap, BuiltMap<String, ClientEntity> clientMap,
BuiltMap<String, UserEntity> userMap, BuiltMap<String, UserEntity> userMap,
@ -113,12 +112,11 @@ var memoizedFilteredTaskList = memo9((String filterEntityId,
BuiltMap<String, InvoiceEntity> invoiceMap, BuiltMap<String, InvoiceEntity> invoiceMap,
BuiltList<String> taskList, BuiltList<String> taskList,
ListUIState taskListState) => ListUIState taskListState) =>
filteredTasksSelector(filterEntityId, filterEntityType, taskMap, clientMap, filteredTasksSelector(selectionState, taskMap, clientMap, userMap,
userMap, projectMap, invoiceMap, taskList, taskListState)); projectMap, invoiceMap, taskList, taskListState));
List<String> filteredTasksSelector( List<String> filteredTasksSelector(
String filterEntityId, SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, TaskEntity> taskMap, BuiltMap<String, TaskEntity> taskMap,
BuiltMap<String, ClientEntity> clientMap, BuiltMap<String, ClientEntity> clientMap,
BuiltMap<String, UserEntity> userMap, BuiltMap<String, UserEntity> userMap,
@ -126,12 +124,19 @@ List<String> filteredTasksSelector(
BuiltMap<String, InvoiceEntity> invoiceMap, BuiltMap<String, InvoiceEntity> invoiceMap,
BuiltList<String> taskList, BuiltList<String> taskList,
ListUIState taskListState) { ListUIState taskListState) {
final filterEntityId = selectionState.filterEntityId;
final filterEntityType = selectionState.filterEntityType;
final list = taskList.where((taskId) { final list = taskList.where((taskId) {
final task = taskMap[taskId]; final task = taskMap[taskId];
final client = clientMap[task.clientId] ?? ClientEntity(id: task.clientId); final client = clientMap[task.clientId] ?? ClientEntity(id: task.clientId);
final project = final project =
projectMap[task.projectId] ?? ProjectEntity(id: task.projectId); projectMap[task.projectId] ?? ProjectEntity(id: task.projectId);
if (task.id == selectionState.selectedId) {
return true;
}
if (!client.isActive && if (!client.isActive &&
!client.matchesEntityFilter(filterEntityType, filterEntityId)) { !client.matchesEntityFilter(filterEntityType, filterEntityId)) {
return false; return false;

View File

@ -1,4 +1,5 @@
import 'package:invoiceninja_flutter/data/models/token_model.dart'; import 'package:invoiceninja_flutter/data/models/token_model.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:memoize/memoize.dart'; import 'package:memoize/memoize.dart';
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
@ -24,28 +25,27 @@ List<String> dropdownTokensSelector(BuiltMap<String, TokenEntity> tokenMap,
return list; return list;
} }
var memoizedFilteredTokenList = memo5(( var memoizedFilteredTokenList = memo4((
String filterEntityId, SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, TokenEntity> tokenMap, BuiltMap<String, TokenEntity> tokenMap,
BuiltList<String> tokenList, BuiltList<String> tokenList,
ListUIState tokenListState, ListUIState tokenListState,
) => ) =>
filteredTokensSelector( filteredTokensSelector(
filterEntityId, selectionState,
filterEntityType,
tokenMap, tokenMap,
tokenList, tokenList,
tokenListState, tokenListState,
)); ));
List<String> filteredTokensSelector( List<String> filteredTokensSelector(
String filterEntityId, SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, TokenEntity> tokenMap, BuiltMap<String, TokenEntity> tokenMap,
BuiltList<String> tokenList, BuiltList<String> tokenList,
ListUIState tokenListState, ListUIState tokenListState,
) { ) {
final filterEntityId = selectionState.filterEntityId;
final list = tokenList.where((tokenId) { final list = tokenList.where((tokenId) {
final token = tokenMap[tokenId]; final token = tokenMap[tokenId];
if (filterEntityId != null && token.id != filterEntityId) { if (filterEntityId != null && token.id != filterEntityId) {
@ -54,6 +54,10 @@ List<String> filteredTokensSelector(
// //
} }
if (token.id == selectionState.selectedId) {
return true;
}
if (token.isSystem) { if (token.isSystem) {
return false; return false;
} }

View File

@ -1,4 +1,5 @@
import 'package:invoiceninja_flutter/data/models/webhook_model.dart'; import 'package:invoiceninja_flutter/data/models/webhook_model.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:memoize/memoize.dart'; import 'package:memoize/memoize.dart';
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
@ -32,34 +33,38 @@ List<String> dropdownWebhooksSelector(
return list; return list;
} }
var memoizedFilteredWebhookList = memo5(( var memoizedFilteredWebhookList = memo4((
String filterEntityId, SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, WebhookEntity> webhookMap, BuiltMap<String, WebhookEntity> webhookMap,
BuiltList<String> webhookList, BuiltList<String> webhookList,
ListUIState webhookListState, ListUIState webhookListState,
) => ) =>
filteredWebhooksSelector( filteredWebhooksSelector(
filterEntityId, selectionState,
filterEntityType,
webhookMap, webhookMap,
webhookList, webhookList,
webhookListState, webhookListState,
)); ));
List<String> filteredWebhooksSelector( List<String> filteredWebhooksSelector(
String filterEntityId, SelectionState selectionState,
EntityType filterEntityType,
BuiltMap<String, WebhookEntity> webhookMap, BuiltMap<String, WebhookEntity> webhookMap,
BuiltList<String> webhookList, BuiltList<String> webhookList,
ListUIState webhookListState, ListUIState webhookListState,
) { ) {
final filterEntityId = selectionState.filterEntityId;
final filterEntityType = selectionState.filterEntityType;
final list = webhookList.where((webhookId) { final list = webhookList.where((webhookId) {
final webhook = webhookMap[webhookId]; final webhook = webhookMap[webhookId];
if (filterEntityId != null && webhook.id != filterEntityId) { if (filterEntityId != null && webhook.id != filterEntityId) {
return false; return false;
} else {} } else {}
if (webhook.id == selectionState.selectedId) {
return true;
}
if (!webhook.matchesStates(webhookListState.stateFilters)) { if (!webhook.matchesStates(webhookListState.stateFilters)) {
return false; return false;
} }

View File

@ -94,8 +94,7 @@ class ClientListVM {
return ClientListVM( return ClientListVM(
state: state, state: state,
clientList: memoizedFilteredClientList( clientList: memoizedFilteredClientList(
state.uiState.filterEntityId, state.getUISelection(EntityType.client),
state.uiState.filterEntityType,
state.clientState.map, state.clientState.map,
state.clientState.list, state.clientState.list,
state.groupState.map, state.groupState.map,

View File

@ -45,8 +45,7 @@ class ClientScreenVM {
return ClientScreenVM( return ClientScreenVM(
clientMap: state.clientState.map, clientMap: state.clientState.map,
clientList: memoizedFilteredClientList( clientList: memoizedFilteredClientList(
state.uiState.filterEntityId, state.getUISelection(EntityType.client),
state.uiState.filterEntityType,
state.clientState.map, state.clientState.map,
state.clientState.list, state.clientState.list,
state.groupState.map, state.groupState.map,

View File

@ -103,8 +103,7 @@ class CreditListVM extends EntityListVM {
return CreditListVM( return CreditListVM(
state: state, state: state,
invoiceList: memoizedFilteredCreditList( invoiceList: memoizedFilteredCreditList(
state.uiState.filterEntityId, state.getUISelection(EntityType.credit),
state.uiState.filterEntityType,
state.creditState.map, state.creditState.map,
state.creditState.list, state.creditState.list,
state.clientState.map, state.clientState.map,

View File

@ -48,8 +48,7 @@ class CreditScreenVM {
return CreditScreenVM( return CreditScreenVM(
creditMap: state.creditState.map, creditMap: state.creditState.map,
creditList: memoizedFilteredCreditList( creditList: memoizedFilteredCreditList(
state.uiState.filterEntityId, state.getUISelection(EntityType.credit),
state.uiState.filterEntityType,
state.creditState.map, state.creditState.map,
state.creditState.list, state.creditState.list,
state.clientState.map, state.clientState.map,

View File

@ -81,8 +81,7 @@ class ExpenseListVM {
user: state.user, user: state.user,
listState: state.expenseListState, listState: state.expenseListState,
expenseList: memoizedFilteredExpenseList( expenseList: memoizedFilteredExpenseList(
state.uiState.filterEntityId, state.getUISelection(EntityType.expense),
state.uiState.filterEntityType,
state.expenseState.map, state.expenseState.map,
state.clientState.map, state.clientState.map,
state.vendorState.map, state.vendorState.map,

View File

@ -45,8 +45,7 @@ class ExpenseScreenVM {
return ExpenseScreenVM( return ExpenseScreenVM(
expenseMap: state.expenseState.map, expenseMap: state.expenseState.map,
expenseList: memoizedFilteredExpenseList( expenseList: memoizedFilteredExpenseList(
state.uiState.filterEntityId, state.getUISelection(EntityType.expense),
state.uiState.filterEntityType,
state.expenseState.map, state.expenseState.map,
state.clientState.map, state.clientState.map,
state.vendorState.map, state.vendorState.map,

View File

@ -83,8 +83,7 @@ class PaymentListVM {
state: state, state: state,
user: state.user, user: state.user,
paymentList: memoizedFilteredPaymentList( paymentList: memoizedFilteredPaymentList(
state.uiState.filterEntityId, state.getUISelection(EntityType.payment),
state.uiState.filterEntityType,
state.paymentState.map, state.paymentState.map,
state.paymentState.list, state.paymentState.list,
state.invoiceState.map, state.invoiceState.map,

View File

@ -45,8 +45,7 @@ class PaymentScreenVM {
return PaymentScreenVM( return PaymentScreenVM(
paymentMap: state.paymentState.map, paymentMap: state.paymentState.map,
paymentList: memoizedFilteredPaymentList( paymentList: memoizedFilteredPaymentList(
state.uiState.filterEntityId, state.getUISelection(EntityType.payment),
state.uiState.filterEntityType,
state.paymentState.map, state.paymentState.map,
state.paymentState.list, state.paymentState.list,
state.invoiceState.map, state.invoiceState.map,

View File

@ -86,8 +86,7 @@ class ProjectListVM {
state: state, state: state,
listState: state.projectListState, listState: state.projectListState,
projectList: memoizedFilteredProjectList( projectList: memoizedFilteredProjectList(
state.uiState.filterEntityId, state.getUISelection(EntityType.project),
state.uiState.filterEntityType,
state.projectState.map, state.projectState.map,
state.projectState.list, state.projectState.list,
state.projectListState, state.projectListState,

View File

@ -45,8 +45,7 @@ class ProjectScreenVM {
return ProjectScreenVM( return ProjectScreenVM(
projectMap: state.projectState.map, projectMap: state.projectState.map,
projectList: memoizedFilteredProjectList( projectList: memoizedFilteredProjectList(
state.uiState.filterEntityId, state.getUISelection(EntityType.project),
state.uiState.filterEntityType,
state.projectState.map, state.projectState.map,
state.projectState.list, state.projectState.list,
state.projectListState, state.projectListState,

View File

@ -96,8 +96,7 @@ class QuoteListVM extends EntityListVM {
return QuoteListVM( return QuoteListVM(
state: state, state: state,
invoiceList: memoizedFilteredQuoteList( invoiceList: memoizedFilteredQuoteList(
state.uiState.filterEntityId, state.getUISelection(EntityType.quote),
state.uiState.filterEntityType,
state.quoteState.map, state.quoteState.map,
state.quoteState.list, state.quoteState.list,
state.clientState.map, state.clientState.map,

View File

@ -45,8 +45,7 @@ class QuoteScreenVM {
return QuoteScreenVM( return QuoteScreenVM(
quoteMap: state.quoteState.map, quoteMap: state.quoteState.map,
quoteList: memoizedFilteredQuoteList( quoteList: memoizedFilteredQuoteList(
state.uiState.filterEntityId, state.getUISelection(EntityType.quote),
state.uiState.filterEntityType,
state.quoteState.map, state.quoteState.map,
state.quoteState.list, state.quoteState.list,
state.clientState.map, state.clientState.map,

View File

@ -84,8 +84,7 @@ class RecurringInvoiceListVM {
userCompany: state.userCompany, userCompany: state.userCompany,
listState: state.recurringInvoiceListState, listState: state.recurringInvoiceListState,
recurringInvoiceList: memoizedFilteredRecurringInvoiceList( recurringInvoiceList: memoizedFilteredRecurringInvoiceList(
state.uiState.filterEntityId, state.getUISelection(EntityType.recurringInvoice),
state.uiState.filterEntityType,
state.recurringInvoiceState.map, state.recurringInvoiceState.map,
state.clientState.map, state.clientState.map,
state.recurringInvoiceState.list, state.recurringInvoiceState.list,

View File

@ -48,8 +48,7 @@ class RecurringInvoiceScreenVM {
return RecurringInvoiceScreenVM( return RecurringInvoiceScreenVM(
recurringInvoiceMap: state.recurringInvoiceState.map, recurringInvoiceMap: state.recurringInvoiceState.map,
recurringInvoiceList: memoizedFilteredRecurringInvoiceList( recurringInvoiceList: memoizedFilteredRecurringInvoiceList(
state.uiState.filterEntityId, state.getUISelection(EntityType.recurringInvoice),
state.uiState.filterEntityType,
state.recurringInvoiceState.map, state.recurringInvoiceState.map,
state.clientState.map, state.clientState.map,
state.recurringInvoiceState.list, state.recurringInvoiceState.list,

View File

@ -83,8 +83,7 @@ class TaskListVM {
user: state.user, user: state.user,
listState: state.taskListState, listState: state.taskListState,
taskList: memoizedFilteredTaskList( taskList: memoizedFilteredTaskList(
state.uiState.filterEntityId, state.getUISelection(EntityType.task),
state.uiState.filterEntityType,
state.taskState.map, state.taskState.map,
state.clientState.map, state.clientState.map,
state.userState.map, state.userState.map,

View File

@ -45,8 +45,7 @@ class TaskScreenVM {
return TaskScreenVM( return TaskScreenVM(
taskMap: state.taskState.map, taskMap: state.taskState.map,
taskList: memoizedFilteredTaskList( taskList: memoizedFilteredTaskList(
state.uiState.filterEntityId, state.getUISelection(EntityType.task),
state.uiState.filterEntityType,
state.taskState.map, state.taskState.map,
state.clientState.map, state.clientState.map,
state.userState.map, state.userState.map,

View File

@ -88,8 +88,7 @@ class TokenListVM {
userCompany: state.userCompany, userCompany: state.userCompany,
listState: state.tokenListState, listState: state.tokenListState,
tokenList: memoizedFilteredTokenList( tokenList: memoizedFilteredTokenList(
state.uiState.filterEntityId, state.getUISelection(EntityType.token),
state.uiState.filterEntityType,
state.tokenState.map, state.tokenState.map,
state.tokenState.list, state.tokenState.list,
state.tokenListState), state.tokenListState),

View File

@ -48,8 +48,7 @@ class TokenScreenVM {
return TokenScreenVM( return TokenScreenVM(
tokenMap: state.tokenState.map, tokenMap: state.tokenState.map,
tokenList: memoizedFilteredTokenList( tokenList: memoizedFilteredTokenList(
state.uiState.filterEntityId, state.getUISelection(EntityType.token),
state.uiState.filterEntityType,
state.tokenState.map, state.tokenState.map,
state.tokenState.list, state.tokenState.list,
state.tokenListState), state.tokenListState),

View File

@ -88,8 +88,7 @@ class WebhookListVM {
userCompany: state.userCompany, userCompany: state.userCompany,
listState: state.webhookListState, listState: state.webhookListState,
webhookList: memoizedFilteredWebhookList( webhookList: memoizedFilteredWebhookList(
state.uiState.filterEntityId, state.getUISelection(EntityType.webhook),
state.uiState.filterEntityType,
state.webhookState.map, state.webhookState.map,
state.webhookState.list, state.webhookState.list,
state.webhookListState), state.webhookListState),

View File

@ -48,8 +48,7 @@ class WebhookScreenVM {
return WebhookScreenVM( return WebhookScreenVM(
webhookMap: state.webhookState.map, webhookMap: state.webhookState.map,
webhookList: memoizedFilteredWebhookList( webhookList: memoizedFilteredWebhookList(
state.uiState.filterEntityId, state.getUISelection(EntityType.webhook),
state.uiState.filterEntityType,
state.webhookState.map, state.webhookState.map,
state.webhookState.list, state.webhookState.list,
state.webhookListState), state.webhookListState),