diff --git a/lib/data/models/models.dart b/lib/data/models/models.dart index ab7652268..81fe9a2ae 100644 --- a/lib/data/models/models.dart +++ b/lib/data/models/models.dart @@ -106,6 +106,8 @@ class EntityAction extends EnumClass { return toSnakeCase(super.toString()); } + bool get isEmail => toString().startsWith('email'); + String toApiParam() { final value = toString(); diff --git a/lib/ui/app/dialogs/alert_dialog.dart b/lib/ui/app/dialogs/alert_dialog.dart index 1722297ab..86b18afbf 100644 --- a/lib/ui/app/dialogs/alert_dialog.dart +++ b/lib/ui/app/dialogs/alert_dialog.dart @@ -53,6 +53,7 @@ class MessageDialog extends StatelessWidget { Padding( padding: const EdgeInsets.only(right: 10), child: TextButton( + autofocus: true, onPressed: () { Navigator.of(context).pop(); if (onDismiss != null) { diff --git a/lib/ui/invoice/edit/invoice_edit.dart b/lib/ui/invoice/edit/invoice_edit.dart index 9585bdefd..d687e1c7c 100644 --- a/lib/ui/invoice/edit/invoice_edit.dart +++ b/lib/ui/invoice/edit/invoice_edit.dart @@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/redux/app/app_actions.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_contacts_vm.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_details_vm.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_footer.dart'; @@ -11,6 +12,7 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_pdf_vm.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_item_selector.dart'; import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart'; +import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; class InvoiceEdit extends StatefulWidget { @@ -78,6 +80,26 @@ class _InvoiceEditState extends State return; } + final viewModel = widget.viewModel; + final invoice = viewModel.invoice; + final client = viewModel.state.clientState.get(invoice.clientId); + final localization = AppLocalization.of(context); + + if (action.isEmail && !client.hasEmailAddress) { + showMessageDialog( + context: context, + message: localization.clientEmailNotSet, + secondaryActions: [ + TextButton( + onPressed: () { + Navigator.of(context).pop(); + editEntity(context: context, entity: client); + }, + child: Text(localization.editClient.toUpperCase())) + ]); + return; + } + widget.viewModel.onSavePressed(context, action); }