diff --git a/lib/data/models/invoice_model.dart b/lib/data/models/invoice_model.dart index 592e17afe..9239c1064 100644 --- a/lib/data/models/invoice_model.dart +++ b/lib/data/models/invoice_model.dart @@ -783,9 +783,9 @@ abstract class InvoiceEntity extends Object if (invitations.isNotEmpty) { if (multiselect) { - actions.add(EntityAction.download); + actions.add(EntityAction.bulkDownload); } else { - actions.add(EntityAction.viewPdf); + actions.addAll([EntityAction.viewPdf, EntityAction.download]); } } diff --git a/lib/data/models/models.dart b/lib/data/models/models.dart index 403b5443a..15963e988 100644 --- a/lib/data/models/models.dart +++ b/lib/data/models/models.dart @@ -59,6 +59,7 @@ class EntityAction extends EnumClass { static const EntityAction approve = _$approve; static const EntityAction apply = _$apply; static const EntityAction download = _$download; + static const EntityAction bulkDownload = _$bulkDownload; static const EntityAction emailInvoice = _$emailInvoice; static const EntityAction emailQuote = _$emailQuote; static const EntityAction emailCredit = _$emailCredit; diff --git a/lib/data/models/models.g.dart b/lib/data/models/models.g.dart index b581e48e7..85e8f4508 100644 --- a/lib/data/models/models.g.dart +++ b/lib/data/models/models.g.dart @@ -24,6 +24,7 @@ const EntityAction _$convertToInvoice = const EntityAction _$approve = const EntityAction._('approve'); const EntityAction _$apply = const EntityAction._('apply'); const EntityAction _$download = const EntityAction._('download'); +const EntityAction _$bulkDownload = const EntityAction._('bulkDownload'); const EntityAction _$emailInvoice = const EntityAction._('emailInvoice'); const EntityAction _$emailQuote = const EntityAction._('emailQuote'); const EntityAction _$emailCredit = const EntityAction._('emailCredit'); @@ -102,6 +103,8 @@ EntityAction _$valueOf(String name) { return _$apply; case 'download': return _$download; + case 'bulkDownload': + return _$bulkDownload; case 'emailInvoice': return _$emailInvoice; case 'emailQuote': @@ -201,6 +204,7 @@ final BuiltSet _$values = _$approve, _$apply, _$download, + _$bulkDownload, _$emailInvoice, _$emailQuote, _$emailCredit, diff --git a/lib/redux/credit/credit_actions.dart b/lib/redux/credit/credit_actions.dart index 84031c234..fb44d43ee 100644 --- a/lib/redux/credit/credit_actions.dart +++ b/lib/redux/credit/credit_actions.dart @@ -536,7 +536,7 @@ Future handleCreditAction( filterEntity: state.clientState.map[credit.clientId], ); break; - case EntityAction.download: + case EntityAction.bulkDownload: store.dispatch(DownloadCreditsRequest( snackBarCompleter(context, localization.exportedData), creditIds)); diff --git a/lib/redux/credit/credit_middleware.dart b/lib/redux/credit/credit_middleware.dart index 54f88626b..14accbb3c 100644 --- a/lib/redux/credit/credit_middleware.dart +++ b/lib/redux/credit/credit_middleware.dart @@ -346,8 +346,8 @@ Middleware _downloadCredits(CreditRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as DownloadCreditsRequest; repository - .bulkAction( - store.state.credentials, action.creditIds, EntityAction.download) + .bulkAction(store.state.credentials, action.creditIds, + EntityAction.bulkDownload) .then((invoices) { store.dispatch(DownloadCreditsSuccess()); if (action.completer != null) { diff --git a/lib/redux/invoice/invoice_actions.dart b/lib/redux/invoice/invoice_actions.dart index cd11c8f45..7d95d17fd 100644 --- a/lib/redux/invoice/invoice_actions.dart +++ b/lib/redux/invoice/invoice_actions.dart @@ -654,6 +654,9 @@ void handleInvoiceAction(BuildContext context, List invoices, ); break; case EntityAction.download: + launch(invoice.invitationDownloadLink); + break; + case EntityAction.bulkDownload: store.dispatch(DownloadInvoicesRequest( snackBarCompleter(context, localization.exportedData), invoiceIds)); diff --git a/lib/redux/invoice/invoice_middleware.dart b/lib/redux/invoice/invoice_middleware.dart index f03cd52cc..b09099972 100644 --- a/lib/redux/invoice/invoice_middleware.dart +++ b/lib/redux/invoice/invoice_middleware.dart @@ -325,8 +325,8 @@ Middleware _downloadInvoices(InvoiceRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as DownloadInvoicesRequest; repository - .bulkAction( - store.state.credentials, action.invoiceIds, EntityAction.download) + .bulkAction(store.state.credentials, action.invoiceIds, + EntityAction.bulkDownload) .then((invoices) { store.dispatch(DownloadInvoicesSuccess()); if (action.completer != null) { diff --git a/lib/redux/quote/quote_actions.dart b/lib/redux/quote/quote_actions.dart index 350137da9..358d29c51 100644 --- a/lib/redux/quote/quote_actions.dart +++ b/lib/redux/quote/quote_actions.dart @@ -554,7 +554,7 @@ Future handleQuoteAction( ..entityType = EntityType.recurringInvoice ..designId = designId)); break; - case EntityAction.download: + case EntityAction.bulkDownload: store.dispatch(DownloadQuotesRequest( snackBarCompleter(context, localization.exportedData), quoteIds)); diff --git a/lib/redux/quote/quote_middleware.dart b/lib/redux/quote/quote_middleware.dart index 965a17519..f09069468 100644 --- a/lib/redux/quote/quote_middleware.dart +++ b/lib/redux/quote/quote_middleware.dart @@ -339,8 +339,8 @@ Middleware _downloadQuotes(QuoteRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as DownloadQuotesRequest; repository - .bulkAction( - store.state.credentials, action.invoiceIds, EntityAction.download) + .bulkAction(store.state.credentials, action.invoiceIds, + EntityAction.bulkDownload) .then((invoices) { store.dispatch(DownloadQuotesSuccess()); if (action.completer != null) { diff --git a/lib/utils/i18n.dart b/lib/utils/i18n.dart index f2d6142a3..6b57a6e7c 100644 --- a/lib/utils/i18n.dart +++ b/lib/utils/i18n.dart @@ -15,6 +15,7 @@ mixin LocalizationsProvider on LocaleCodeAware { static final Map> _localizedValues = { 'en': { // STARTER: lang key - do not remove comment + 'bulk_download': 'Download', 'persist_data_help': 'Save data locally to enable the app to start faster, disabling may improve performance in large accounts', 'persist_ui': 'Persist UI', diff --git a/lib/utils/icons.dart b/lib/utils/icons.dart index 48ddac5cb..881c8485e 100644 --- a/lib/utils/icons.dart +++ b/lib/utils/icons.dart @@ -10,8 +10,10 @@ IconData getEntityActionIcon(EntityAction entityAction) { return Icons.edit; case EntityAction.viewStatement: case EntityAction.viewPdf: - case EntityAction.download: + case EntityAction.bulkDownload: return Icons.picture_as_pdf; + case EntityAction.download: + return Icons.download; case EntityAction.clientPortal: return Icons.cloud_circle; case EntityAction.clone: