From f98143b779adde63a92eb9832b3a2de81fcbf5b2 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Thu, 25 Jun 2020 11:00:20 +0300 Subject: [PATCH] =?UTF-8?q?Change=20=E2=80=98Send=20Email=E2=80=99=20to=20?= =?UTF-8?q?=E2=80=98Email=20Invoice=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/data/models/invoice_model.dart | 8 +++++++- lib/data/models/models.dart | 5 ++++- lib/data/models/models.g.dart | 20 ++++++++++++++++---- lib/data/models/payment_model.dart | 2 +- lib/data/web_client.dart | 2 -- lib/redux/credit/credit_actions.dart | 2 +- lib/redux/invoice/invoice_actions.dart | 2 +- lib/redux/payment/payment_actions.dart | 2 +- lib/redux/quote/quote_actions.dart | 2 +- lib/utils/i18n.dart | 14 ++++++++++++++ lib/utils/icons.dart | 5 ++++- 11 files changed, 50 insertions(+), 14 deletions(-) diff --git a/lib/data/models/invoice_model.dart b/lib/data/models/invoice_model.dart index 5866373ca..2b6782d48 100644 --- a/lib/data/models/invoice_model.dart +++ b/lib/data/models/invoice_model.dart @@ -536,7 +536,13 @@ abstract class InvoiceEntity extends Object } if (userCompany.canEditEntity(this)) { - actions.add(EntityAction.sendEmail); + if (entityType == EntityType.quote) { + actions.add(EntityAction.emailQuote); + } else if (entityType == EntityType.credit) { + actions.add(EntityAction.emailCredit); + } else { + actions.add(EntityAction.emailInvoice); + } if (!isQuote && userCompany.canCreate(EntityType.payment) && diff --git a/lib/data/models/models.dart b/lib/data/models/models.dart index f2c79e216..2b4662e54 100644 --- a/lib/data/models/models.dart +++ b/lib/data/models/models.dart @@ -48,7 +48,10 @@ class EntityAction extends EnumClass { static const EntityAction convert = _$convert; static const EntityAction approve = _$approve; static const EntityAction download = _$download; - static const EntityAction sendEmail = _$sendEmail; + static const EntityAction emailInvoice = _$emailInvoice; + static const EntityAction emailQuote = _$emailQuote; + static const EntityAction emailCredit = _$emailCredit; + static const EntityAction emailPayment = _$emailPayment; static const EntityAction markSent = _$markSent; static const EntityAction markPaid = _$markPaid; static const EntityAction newClient = _$newClient; diff --git a/lib/data/models/models.g.dart b/lib/data/models/models.g.dart index 5d455a5e2..25289c0da 100644 --- a/lib/data/models/models.g.dart +++ b/lib/data/models/models.g.dart @@ -18,7 +18,10 @@ const EntityAction _$cloneToQuote = const EntityAction._('cloneToQuote'); const EntityAction _$convert = const EntityAction._('convert'); const EntityAction _$approve = const EntityAction._('approve'); const EntityAction _$download = const EntityAction._('download'); -const EntityAction _$sendEmail = const EntityAction._('sendEmail'); +const EntityAction _$emailInvoice = const EntityAction._('emailInvoice'); +const EntityAction _$emailQuote = const EntityAction._('emailQuote'); +const EntityAction _$emailCredit = const EntityAction._('emailCredit'); +const EntityAction _$emailPayment = const EntityAction._('emailPayment'); const EntityAction _$markSent = const EntityAction._('markSent'); const EntityAction _$markPaid = const EntityAction._('markPaid'); const EntityAction _$newClient = const EntityAction._('newClient'); @@ -70,8 +73,14 @@ EntityAction _$valueOf(String name) { return _$approve; case 'download': return _$download; - case 'sendEmail': - return _$sendEmail; + case 'emailInvoice': + return _$emailInvoice; + case 'emailQuote': + return _$emailQuote; + case 'emailCredit': + return _$emailCredit; + case 'emailPayment': + return _$emailPayment; case 'markSent': return _$markSent; case 'markPaid': @@ -137,7 +146,10 @@ final BuiltSet _$values = _$convert, _$approve, _$download, - _$sendEmail, + _$emailInvoice, + _$emailQuote, + _$emailCredit, + _$emailPayment, _$markSent, _$markPaid, _$newClient, diff --git a/lib/data/models/payment_model.dart b/lib/data/models/payment_model.dart index 80176ea0d..92ac15489 100644 --- a/lib/data/models/payment_model.dart +++ b/lib/data/models/payment_model.dart @@ -339,7 +339,7 @@ abstract class PaymentEntity extends Object } if (client != null && client.hasEmailAddress) { - actions.add(EntityAction.sendEmail); + actions.add(EntityAction.emailPayment); } } } diff --git a/lib/data/web_client.dart b/lib/data/web_client.dart index 663132c2c..a2016f512 100644 --- a/lib/data/web_client.dart +++ b/lib/data/web_client.dart @@ -178,8 +178,6 @@ void _checkResponse(http.Response response) { final serverVersion = response.headers['x-app-version']; final minClientVersion = response.headers['x-minimum-client-version']; - // TODO re-enable this code - return; if (serverVersion == null) { throw 'Error: please check that Invoice Ninja v5 is installed on the server'; } else { diff --git a/lib/redux/credit/credit_actions.dart b/lib/redux/credit/credit_actions.dart index dc1e92ed4..4b944831a 100644 --- a/lib/redux/credit/credit_actions.dart +++ b/lib/redux/credit/credit_actions.dart @@ -417,7 +417,7 @@ Future handleCreditAction( snackBarCompleter(context, localization.markedCreditAsSent), creditIds)); break; - case EntityAction.sendEmail: + case EntityAction.emailCredit: store.dispatch(ShowEmailCredit( completer: snackBarCompleter(context, localization.emailedCredit), diff --git a/lib/redux/invoice/invoice_actions.dart b/lib/redux/invoice/invoice_actions.dart index 4fbe98d0b..29f9c58b7 100644 --- a/lib/redux/invoice/invoice_actions.dart +++ b/lib/redux/invoice/invoice_actions.dart @@ -508,7 +508,7 @@ void handleInvoiceAction(BuildContext context, List invoices, : localization.markedInvoicesAsPaid), invoiceIds)); break; - case EntityAction.sendEmail: + case EntityAction.emailInvoice: final client = state.clientState.get(invoice.clientId); if (!client.hasEmailAddress) { showMessageDialog(context: context, message: localization.clientEmailNotSet); diff --git a/lib/redux/payment/payment_actions.dart b/lib/redux/payment/payment_actions.dart index c3e1d96dd..73e164b93 100644 --- a/lib/redux/payment/payment_actions.dart +++ b/lib/redux/payment/payment_actions.dart @@ -332,7 +332,7 @@ void handlePaymentAction( payment: payment, )); break; - case EntityAction.sendEmail: + case EntityAction.emailPayment: store.dispatch(EmailPaymentRequest( snackBarCompleter(context, localization.emailedPayment), payment)); diff --git a/lib/redux/quote/quote_actions.dart b/lib/redux/quote/quote_actions.dart index dbdbbc78f..661c95250 100644 --- a/lib/redux/quote/quote_actions.dart +++ b/lib/redux/quote/quote_actions.dart @@ -430,7 +430,7 @@ Future handleQuoteAction( snackBarCompleter(context, localization.markedQuoteAsSent), quoteIds)); break; - case EntityAction.sendEmail: + case EntityAction.emailQuote: store.dispatch(ShowEmailQuote( completer: snackBarCompleter(context, localization.emailedQuote), diff --git a/lib/utils/i18n.dart b/lib/utils/i18n.dart index f5118e8ce..5f14942c2 100644 --- a/lib/utils/i18n.dart +++ b/lib/utils/i18n.dart @@ -15,6 +15,10 @@ mixin LocalizationsProvider on LocaleCodeAware { static final Map> _localizedValues = { 'en': { // STARTER: lang key - do not remove comment + 'email_invoice': 'Email Invoice', + 'email_quote': 'Email Quote', + 'email_credit': 'Email Credit', + 'email_payment': 'Email Payment', 'client_email_not_set': 'Client does not have an email address set', 'ledger': 'Ledger', 'view_pdf': 'View PDF', @@ -3913,6 +3917,16 @@ mixin LocalizationsProvider on LocaleCodeAware { String get clientEmailNotSet => _localizedValues[localeCode]['client_email_not_set'] ?? ''; + String get emailInvoice => + _localizedValues[localeCode]['email_invoice'] ?? ''; + + String get emailQuote => _localizedValues[localeCode]['email_quote'] ?? ''; + + String get emailCredit => _localizedValues[localeCode]['email_credit'] ?? ''; + + String get emailPayment => + _localizedValues[localeCode]['email_payment'] ?? ''; + String lookup(String key) { final lookupKey = toSnakeCase(key); return _localizedValues[localeCode][lookupKey] ?? diff --git a/lib/utils/icons.dart b/lib/utils/icons.dart index bea6e1491..5e5268bb2 100644 --- a/lib/utils/icons.dart +++ b/lib/utils/icons.dart @@ -20,7 +20,10 @@ IconData getEntityActionIcon(EntityAction entityAction) { return Icons.public; case EntityAction.markPaid: return Icons.payment; - case EntityAction.sendEmail: + case EntityAction.emailPayment: + case EntityAction.emailQuote: + case EntityAction.emailInvoice: + case EntityAction.emailCredit: return Icons.send; case EntityAction.archive: return Icons.archive;