diff --git a/lib/redux/app/app_actions.dart b/lib/redux/app/app_actions.dart index 28b4df062..6097c01ca 100644 --- a/lib/redux/app/app_actions.dart +++ b/lib/redux/app/app_actions.dart @@ -1016,6 +1016,7 @@ void createEntity({ bool force = false, Completer completer, Completer cancelCompleter, + BaseEntity filterEntity, }) { final store = StoreProvider.of(context); final state = store.state; @@ -1038,6 +1039,14 @@ void createEntity({ store.dispatch(ToggleEditorLayout(entity.entityType)); } + if (filterEntity != null) { + if (uiState.filterEntityType != filterEntity.entityType || + uiState.filterEntityId != filterEntity.id) { + store.dispatch(ClearEntitySelection(entityType: entity.entityType)); + store.dispatch(FilterByEntity(entity: filterEntity)); + } + } + switch (entity.entityType) { case EntityType.client: store.dispatch(EditClient( diff --git a/lib/redux/credit/credit_actions.dart b/lib/redux/credit/credit_actions.dart index b3455d1f9..9b7ed2e28 100644 --- a/lib/redux/credit/credit_actions.dart +++ b/lib/redux/credit/credit_actions.dart @@ -462,6 +462,7 @@ Future handleCreditAction( final localization = AppLocalization.of(context); final credit = credits.first as InvoiceEntity; final creditIds = credits.map((credit) => credit.id).toList(); + final client = state.clientState.get(credit.clientId); switch (action) { case EntityAction.edit: @@ -497,7 +498,7 @@ Future handleCreditAction( TextButton( onPressed: () { Navigator.of(context).pop(); - editEntity(entity: state.clientState.get(credit.clientId)); + editEntity(entity: client); }, child: Text(localization.editClient.toUpperCase())) ]); @@ -587,13 +588,12 @@ Future handleCreditAction( case EntityAction.applyCredit: createEntity( context: context, - entity: PaymentEntity( - state: state, client: state.clientState.get(credit.clientId)) - .rebuild((b) => b - ..typeId = kPaymentTypeCredit - ..credits.addAll(credits - .map((credit) => PaymentableEntity.fromCredit(credit)) - .toList())), + entity: PaymentEntity(state: state, client: client).rebuild((b) => b + ..typeId = kPaymentTypeCredit + ..credits.addAll(credits + .map((credit) => PaymentableEntity.fromCredit(credit)) + .toList())), + filterEntity: client, ); break; case EntityAction.download: diff --git a/lib/redux/invoice/invoice_actions.dart b/lib/redux/invoice/invoice_actions.dart index aedebf85f..d76ec76df 100644 --- a/lib/redux/invoice/invoice_actions.dart +++ b/lib/redux/invoice/invoice_actions.dart @@ -528,6 +528,7 @@ void handleInvoiceAction(BuildContext context, List invoices, final localization = AppLocalization.of(context); final invoice = invoices.first as InvoiceEntity; final invoiceIds = invoices.map((invoice) => invoice.id).toList(); + final client = state.clientState.get(invoice.clientId); switch (action) { case EntityAction.edit: @@ -616,7 +617,7 @@ void handleInvoiceAction(BuildContext context, List invoices, TextButton( onPressed: () { Navigator.of(context).pop(); - editEntity(entity: state.clientState.get(invoice.clientId)); + editEntity(entity: client); }, child: Text(localization.editClient.toUpperCase())) ]); @@ -694,13 +695,12 @@ void handleInvoiceAction(BuildContext context, List invoices, case EntityAction.newPayment: createEntity( context: context, - entity: PaymentEntity( - state: state, client: state.clientState.get(invoice.clientId)) - .rebuild((b) => b - ..invoices.addAll(invoices - .where((invoice) => !(invoice as InvoiceEntity).isPaid) - .map((invoice) => PaymentableEntity.fromInvoice(invoice)) - .toList())), + entity: PaymentEntity(state: state, client: client).rebuild((b) => b + ..invoices.addAll(invoices + .where((invoice) => !(invoice as InvoiceEntity).isPaid) + .map((invoice) => PaymentableEntity.fromInvoice(invoice)) + .toList())), + filterEntity: client, ); break; case EntityAction.download: