diff --git a/lib/data/models/payment_model.dart b/lib/data/models/payment_model.dart index f9405863e..72e8ab287 100644 --- a/lib/data/models/payment_model.dart +++ b/lib/data/models/payment_model.dart @@ -52,7 +52,7 @@ abstract class PaymentEntity extends Object with BaseEntity implements Built _showEmailInvoice() { return (Store store, dynamic action, NextDispatcher next) async { next(action); - final emailWasSent = await Navigator.of(action.context).pushNamed(InvoiceEmailScreen.route); + final emailWasSent = + await Navigator.of(action.context).pushNamed(InvoiceEmailScreen.route); if (action.completer != null && emailWasSent) { action.completer.complete(null); @@ -243,7 +244,9 @@ Middleware _loadInvoice(InvoiceRepository repository) { repository .loadItem(state.selectedCompany, state.authState, action.invoiceId) .then((invoice) { + store.dispatch(LoadInvoiceSuccess(invoice)); + store.dispatch(LoadClient(clientId: invoice.clientId)); if (action.completer != null) { action.completer.complete(null); diff --git a/lib/redux/payment/payment_middleware.dart b/lib/redux/payment/payment_middleware.dart index 8378e7bb0..621969ff5 100644 --- a/lib/redux/payment/payment_middleware.dart +++ b/lib/redux/payment/payment_middleware.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:invoiceninja_flutter/redux/client/client_actions.dart'; +import 'package:invoiceninja_flutter/redux/invoice/invoice_actions.dart'; import 'package:invoiceninja_flutter/redux/payment/payment_selectors.dart'; import 'package:invoiceninja_flutter/redux/quote/quote_actions.dart'; import 'package:redux/redux.dart'; @@ -105,8 +106,7 @@ Middleware _deletePayment(PaymentRepository repository) { origPayment, EntityAction.delete) .then((PaymentEntity payment) { store.dispatch(DeletePaymentSuccess(payment)); - store.dispatch(LoadClient( - clientId: paymentInvoiceSelector(payment.id, store.state).clientId)); + store.dispatch(LoadInvoice(invoiceId: payment.invoiceId)); if (action.completer != null) { action.completer.complete(null); } @@ -130,8 +130,7 @@ Middleware _restorePayment(PaymentRepository repository) { origPayment, EntityAction.restore) .then((PaymentEntity payment) { store.dispatch(RestorePaymentSuccess(payment)); - store.dispatch(LoadClient( - clientId: paymentInvoiceSelector(payment.id, store.state).clientId)); + store.dispatch(LoadInvoice(invoiceId: payment.invoiceId)); if (action.completer != null) { action.completer.complete(null); } @@ -158,8 +157,7 @@ Middleware _savePayment(PaymentRepository repository) { } else { store.dispatch(SavePaymentSuccess(payment)); } - store.dispatch(LoadClient( - clientId: paymentInvoiceSelector(payment.id, store.state).clientId)); + store.dispatch(LoadInvoice(invoiceId: payment.invoiceId)); action.completer.complete(null); }).catchError((Object error) { print(error); diff --git a/lib/ui/client/client_list.dart b/lib/ui/client/client_list.dart index 39bef6bcb..e4ade80a9 100644 --- a/lib/ui/client/client_list.dart +++ b/lib/ui/client/client_list.dart @@ -37,6 +37,9 @@ class ClientList extends StatelessWidget { } void _showMenu(BuildContext context, ClientEntity client) async { + if (client == null) { + return; + } final user = viewModel.user; final message = await showDialog( context: context, diff --git a/lib/ui/invoice/invoice_list.dart b/lib/ui/invoice/invoice_list.dart index 783d70d75..65384e293 100644 --- a/lib/ui/invoice/invoice_list.dart +++ b/lib/ui/invoice/invoice_list.dart @@ -18,6 +18,10 @@ class InvoiceList extends StatelessWidget { void _showMenu( BuildContext context, InvoiceEntity invoice, ClientEntity client) async { + if (invoice == null || client == null) { + return; + } + final user = viewModel.user; final message = await showDialog( context: context, diff --git a/lib/ui/payment/edit/payment_edit_vm.dart b/lib/ui/payment/edit/payment_edit_vm.dart index 23b8cafae..f8cfc9c58 100644 --- a/lib/ui/payment/edit/payment_edit_vm.dart +++ b/lib/ui/payment/edit/payment_edit_vm.dart @@ -92,12 +92,8 @@ class PaymentEditVM { final Completer completer = errorCompleter(context) ..future.then((_) { if (payment.isNew) { - if (store.state.uiState.currentRoute == PaymentEditScreen.route) { - Navigator.of(context).pop(); - } else { - Navigator.of(context) - .pushReplacementNamed(PaymentViewScreen.route); - } + Navigator.of(context) + .pushReplacementNamed(PaymentViewScreen.route); } else { Navigator.of(context).pop(); } diff --git a/lib/ui/payment/payment_list.dart b/lib/ui/payment/payment_list.dart index d212555ea..58d8cf5d6 100644 --- a/lib/ui/payment/payment_list.dart +++ b/lib/ui/payment/payment_list.dart @@ -18,6 +18,10 @@ class PaymentList extends StatelessWidget { void _showMenu( BuildContext context, PaymentEntity payment, ClientEntity client) async { + if (payment == null || client == null) { + return; + } + final user = viewModel.user; final message = await showDialog( context: context, diff --git a/lib/ui/product/product_list.dart b/lib/ui/product/product_list.dart index 6b33a896c..167dba9c9 100644 --- a/lib/ui/product/product_list.dart +++ b/lib/ui/product/product_list.dart @@ -37,6 +37,9 @@ class ProductList extends StatelessWidget { } void _showMenu(BuildContext context, ProductEntity product) async { + if (product == null) { + return; + } final user = viewModel.user; final message = await showDialog( context: context, diff --git a/stubs/ui/stub/stub_list b/stubs/ui/stub/stub_list index e0ebc6f17..3065fd73d 100644 --- a/stubs/ui/stub/stub_list +++ b/stubs/ui/stub/stub_list @@ -37,6 +37,9 @@ class StubList extends StatelessWidget { } void _showMenu(BuildContext context, StubEntity stub) async { + if (stub == null) { + return; + } final user = viewModel.user; final message = await showDialog( context: context,