Add download option

This commit is contained in:
Hillel Coren 2021-10-22 11:39:58 +03:00
parent cacc025a05
commit be645931e0
11 changed files with 22 additions and 11 deletions

View File

@ -783,9 +783,9 @@ abstract class InvoiceEntity extends Object
if (invitations.isNotEmpty) { if (invitations.isNotEmpty) {
if (multiselect) { if (multiselect) {
actions.add(EntityAction.download); actions.add(EntityAction.bulkDownload);
} else { } else {
actions.add(EntityAction.viewPdf); actions.addAll([EntityAction.viewPdf, EntityAction.download]);
} }
} }

View File

@ -59,6 +59,7 @@ class EntityAction extends EnumClass {
static const EntityAction approve = _$approve; static const EntityAction approve = _$approve;
static const EntityAction apply = _$apply; static const EntityAction apply = _$apply;
static const EntityAction download = _$download; static const EntityAction download = _$download;
static const EntityAction bulkDownload = _$bulkDownload;
static const EntityAction emailInvoice = _$emailInvoice; static const EntityAction emailInvoice = _$emailInvoice;
static const EntityAction emailQuote = _$emailQuote; static const EntityAction emailQuote = _$emailQuote;
static const EntityAction emailCredit = _$emailCredit; static const EntityAction emailCredit = _$emailCredit;

View File

@ -24,6 +24,7 @@ const EntityAction _$convertToInvoice =
const EntityAction _$approve = const EntityAction._('approve'); const EntityAction _$approve = const EntityAction._('approve');
const EntityAction _$apply = const EntityAction._('apply'); const EntityAction _$apply = const EntityAction._('apply');
const EntityAction _$download = const EntityAction._('download'); const EntityAction _$download = const EntityAction._('download');
const EntityAction _$bulkDownload = const EntityAction._('bulkDownload');
const EntityAction _$emailInvoice = const EntityAction._('emailInvoice'); const EntityAction _$emailInvoice = const EntityAction._('emailInvoice');
const EntityAction _$emailQuote = const EntityAction._('emailQuote'); const EntityAction _$emailQuote = const EntityAction._('emailQuote');
const EntityAction _$emailCredit = const EntityAction._('emailCredit'); const EntityAction _$emailCredit = const EntityAction._('emailCredit');
@ -102,6 +103,8 @@ EntityAction _$valueOf(String name) {
return _$apply; return _$apply;
case 'download': case 'download':
return _$download; return _$download;
case 'bulkDownload':
return _$bulkDownload;
case 'emailInvoice': case 'emailInvoice':
return _$emailInvoice; return _$emailInvoice;
case 'emailQuote': case 'emailQuote':
@ -201,6 +204,7 @@ final BuiltSet<EntityAction> _$values =
_$approve, _$approve,
_$apply, _$apply,
_$download, _$download,
_$bulkDownload,
_$emailInvoice, _$emailInvoice,
_$emailQuote, _$emailQuote,
_$emailCredit, _$emailCredit,

View File

@ -536,7 +536,7 @@ Future handleCreditAction(
filterEntity: state.clientState.map[credit.clientId], filterEntity: state.clientState.map[credit.clientId],
); );
break; break;
case EntityAction.download: case EntityAction.bulkDownload:
store.dispatch(DownloadCreditsRequest( store.dispatch(DownloadCreditsRequest(
snackBarCompleter<Null>(context, localization.exportedData), snackBarCompleter<Null>(context, localization.exportedData),
creditIds)); creditIds));

View File

@ -346,8 +346,8 @@ Middleware<AppState> _downloadCredits(CreditRepository repository) {
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) { return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
final action = dynamicAction as DownloadCreditsRequest; final action = dynamicAction as DownloadCreditsRequest;
repository repository
.bulkAction( .bulkAction(store.state.credentials, action.creditIds,
store.state.credentials, action.creditIds, EntityAction.download) EntityAction.bulkDownload)
.then((invoices) { .then((invoices) {
store.dispatch(DownloadCreditsSuccess()); store.dispatch(DownloadCreditsSuccess());
if (action.completer != null) { if (action.completer != null) {

View File

@ -654,6 +654,9 @@ void handleInvoiceAction(BuildContext context, List<BaseEntity> invoices,
); );
break; break;
case EntityAction.download: case EntityAction.download:
launch(invoice.invitationDownloadLink);
break;
case EntityAction.bulkDownload:
store.dispatch(DownloadInvoicesRequest( store.dispatch(DownloadInvoicesRequest(
snackBarCompleter<Null>(context, localization.exportedData), snackBarCompleter<Null>(context, localization.exportedData),
invoiceIds)); invoiceIds));

View File

@ -325,8 +325,8 @@ Middleware<AppState> _downloadInvoices(InvoiceRepository repository) {
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) { return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
final action = dynamicAction as DownloadInvoicesRequest; final action = dynamicAction as DownloadInvoicesRequest;
repository repository
.bulkAction( .bulkAction(store.state.credentials, action.invoiceIds,
store.state.credentials, action.invoiceIds, EntityAction.download) EntityAction.bulkDownload)
.then((invoices) { .then((invoices) {
store.dispatch(DownloadInvoicesSuccess()); store.dispatch(DownloadInvoicesSuccess());
if (action.completer != null) { if (action.completer != null) {

View File

@ -554,7 +554,7 @@ Future handleQuoteAction(
..entityType = EntityType.recurringInvoice ..entityType = EntityType.recurringInvoice
..designId = designId)); ..designId = designId));
break; break;
case EntityAction.download: case EntityAction.bulkDownload:
store.dispatch(DownloadQuotesRequest( store.dispatch(DownloadQuotesRequest(
snackBarCompleter<Null>(context, localization.exportedData), snackBarCompleter<Null>(context, localization.exportedData),
quoteIds)); quoteIds));

View File

@ -339,8 +339,8 @@ Middleware<AppState> _downloadQuotes(QuoteRepository repository) {
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) { return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
final action = dynamicAction as DownloadQuotesRequest; final action = dynamicAction as DownloadQuotesRequest;
repository repository
.bulkAction( .bulkAction(store.state.credentials, action.invoiceIds,
store.state.credentials, action.invoiceIds, EntityAction.download) EntityAction.bulkDownload)
.then((invoices) { .then((invoices) {
store.dispatch(DownloadQuotesSuccess()); store.dispatch(DownloadQuotesSuccess());
if (action.completer != null) { if (action.completer != null) {

View File

@ -15,6 +15,7 @@ mixin LocalizationsProvider on LocaleCodeAware {
static final Map<String, Map<String, String>> _localizedValues = { static final Map<String, Map<String, String>> _localizedValues = {
'en': { 'en': {
// STARTER: lang key - do not remove comment // STARTER: lang key - do not remove comment
'bulk_download': 'Download',
'persist_data_help': 'persist_data_help':
'Save data locally to enable the app to start faster, disabling may improve performance in large accounts', 'Save data locally to enable the app to start faster, disabling may improve performance in large accounts',
'persist_ui': 'Persist UI', 'persist_ui': 'Persist UI',

View File

@ -10,8 +10,10 @@ IconData getEntityActionIcon(EntityAction entityAction) {
return Icons.edit; return Icons.edit;
case EntityAction.viewStatement: case EntityAction.viewStatement:
case EntityAction.viewPdf: case EntityAction.viewPdf:
case EntityAction.download: case EntityAction.bulkDownload:
return Icons.picture_as_pdf; return Icons.picture_as_pdf;
case EntityAction.download:
return Icons.download;
case EntityAction.clientPortal: case EntityAction.clientPortal:
return Icons.cloud_circle; return Icons.cloud_circle;
case EntityAction.clone: case EntityAction.clone: