This commit is contained in:
Hillel Coren 2018-08-23 10:48:01 -07:00
parent 91ef51d9ca
commit ca6610bc2b
9 changed files with 43 additions and 43 deletions

View File

@ -40,7 +40,7 @@ class EntityAction extends EnumClass {
static const EntityAction restore = _$restore; static const EntityAction restore = _$restore;
static const EntityAction clone = _$clone; static const EntityAction clone = _$clone;
static const EntityAction download = _$download; static const EntityAction download = _$download;
static const EntityAction emailInvoice = _$email; static const EntityAction email = _$email;
static const EntityAction markSent = _$markSent; static const EntityAction markSent = _$markSent;
static const EntityAction invoice = _$invoice; static const EntityAction invoice = _$invoice;
static const EntityAction pdf = _$pdf; static const EntityAction pdf = _$pdf;

View File

@ -43,7 +43,7 @@ class InvoiceList extends StatelessWidget {
leading: Icon(Icons.send), leading: Icon(Icons.send),
title: Text(AppLocalization.of(context).email), title: Text(AppLocalization.of(context).email),
onTap: () => viewModel.onEntityAction( onTap: () => viewModel.onEntityAction(
context, invoice, EntityAction.emailInvoice), context, invoice, EntityAction.email),
) )
: Container(), : Container(),
ListTile( ListTile(

View File

@ -117,7 +117,7 @@ class InvoiceListVM {
context, localization.markedInvoiceAsSent), context, localization.markedInvoiceAsSent),
invoice.id)); invoice.id));
break; break;
case EntityAction.emailInvoice: case EntityAction.email:
store.dispatch(ShowEmailInvoice( store.dispatch(ShowEmailInvoice(
completer: popCompleter( completer: popCompleter(
context, localization.emailedInvoice), context, localization.emailedInvoice),

View File

@ -294,7 +294,7 @@ class _CustomAppBar extends StatelessWidget implements PreferredSizeWidget {
: null, : null,
user.canEditEntity(invoice) && client.hasEmailAddress user.canEditEntity(invoice) && client.hasEmailAddress
? ActionMenuChoice( ? ActionMenuChoice(
action: EntityAction.emailInvoice, action: EntityAction.email,
icon: Icons.send, icon: Icons.send,
label: AppLocalization.of(context).email, label: AppLocalization.of(context).email,
) )

View File

@ -111,7 +111,7 @@ class InvoiceViewVM {
snackBarCompleter(context, localization.markedInvoiceAsSent), snackBarCompleter(context, localization.markedInvoiceAsSent),
invoice.id)); invoice.id));
break; break;
case EntityAction.emailInvoice: case EntityAction.email:
store.dispatch(ShowEmailInvoice( store.dispatch(ShowEmailInvoice(
completer: completer:
snackBarCompleter(context, localization.emailedInvoice), snackBarCompleter(context, localization.emailedInvoice),

View File

@ -43,7 +43,7 @@ class QuoteList extends StatelessWidget {
leading: Icon(Icons.send), leading: Icon(Icons.send),
title: Text(AppLocalization.of(context).email), title: Text(AppLocalization.of(context).email),
onTap: () => viewModel.onEntityAction( onTap: () => viewModel.onEntityAction(
context, invoice, EntityAction.emailInvoice), context, invoice, EntityAction.email),
) )
: Container(), : Container(),
ListTile( ListTile(
@ -163,7 +163,7 @@ class QuoteList extends StatelessWidget {
viewModel.onDismissed( viewModel.onDismissed(
context, invoice, direction), context, invoice, direction),
onTap: () => onTap: () =>
viewModel.onInvoiceTap(context, invoice), viewModel.onQuoteTap(context, invoice),
onLongPress: () => onLongPress: () =>
_showMenu(context, invoice, client), _showMenu(context, invoice, client),
), ),

View File

@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
import 'package:invoiceninja_flutter/redux/client/client_actions.dart'; import 'package:invoiceninja_flutter/redux/client/client_actions.dart';
import 'package:invoiceninja_flutter/redux/quote/quote_actions.dart';
import 'package:invoiceninja_flutter/redux/quote/quote_selectors.dart'; import 'package:invoiceninja_flutter/redux/quote/quote_selectors.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
@ -14,7 +15,6 @@ import 'package:invoiceninja_flutter/utils/pdf.dart';
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/redux/invoice/invoice_actions.dart';
class QuoteListBuilder extends StatelessWidget { class QuoteListBuilder extends StatelessWidget {
static const String route = '/invoices/edit'; static const String route = '/invoices/edit';
@ -44,7 +44,7 @@ class QuoteListVM {
final String filter; final String filter;
final bool isLoading; final bool isLoading;
final bool isLoaded; final bool isLoaded;
final Function(BuildContext, InvoiceEntity) onInvoiceTap; final Function(BuildContext, InvoiceEntity) onQuoteTap;
final Function(BuildContext, InvoiceEntity, DismissDirection) onDismissed; final Function(BuildContext, InvoiceEntity, DismissDirection) onDismissed;
final Function(BuildContext) onRefreshed; final Function(BuildContext) onRefreshed;
final Function onClearClientFilterPressed; final Function onClearClientFilterPressed;
@ -60,7 +60,7 @@ class QuoteListVM {
@required this.isLoading, @required this.isLoading,
@required this.isLoaded, @required this.isLoaded,
@required this.filter, @required this.filter,
@required this.onInvoiceTap, @required this.onQuoteTap,
@required this.onDismissed, @required this.onDismissed,
@required this.onRefreshed, @required this.onRefreshed,
@required this.onClearClientFilterPressed, @required this.onClearClientFilterPressed,
@ -75,7 +75,7 @@ class QuoteListVM {
} }
final completer = snackBarCompleter( final completer = snackBarCompleter(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadInvoices(completer: completer, force: true)); store.dispatch(LoadQuotes(completer: completer, force: true));
return completer.future; return completer.future;
} }
@ -94,58 +94,58 @@ class QuoteListVM {
isLoading: state.isLoading, isLoading: state.isLoading,
isLoaded: state.invoiceState.isLoaded && state.clientState.isLoaded, isLoaded: state.invoiceState.isLoaded && state.clientState.isLoaded,
filter: state.invoiceListState.filter, filter: state.invoiceListState.filter,
onInvoiceTap: (context, invoice) { onQuoteTap: (context, invoice) {
store.dispatch(ViewInvoice(invoiceId: invoice.id, context: context)); store.dispatch(ViewQuote(quoteId: invoice.id, context: context));
}, },
onRefreshed: (context) => _handleRefresh(context), onRefreshed: (context) => _handleRefresh(context),
onClearClientFilterPressed: () => onClearClientFilterPressed: () =>
store.dispatch(FilterInvoicesByClient()), store.dispatch(FilterQuotesByClient()),
onViewClientFilterPressed: (BuildContext context) => store.dispatch( onViewClientFilterPressed: (BuildContext context) => store.dispatch(
ViewClient( ViewClient(
clientId: state.invoiceListState.filterClientId, clientId: state.invoiceListState.filterClientId,
context: context)), context: context)),
onEntityAction: (context, invoice, action) { onEntityAction: (context, quote, action) {
final localization = AppLocalization.of(context); final localization = AppLocalization.of(context);
switch (action) { switch (action) {
case EntityAction.pdf: case EntityAction.pdf:
Navigator.of(context).pop(); Navigator.of(context).pop();
viewPdf(invoice, context); viewPdf(quote, context);
break; break;
case EntityAction.markSent: case EntityAction.markSent:
store.dispatch(MarkSentInvoiceRequest( store.dispatch(MarkSentQuoteRequest(
popCompleter( popCompleter(
context, localization.markedInvoiceAsSent), context, localization.markedQuoteAsSent),
invoice.id)); quote.id));
break; break;
case EntityAction.emailInvoice: case EntityAction.email:
store.dispatch(ShowEmailInvoice( store.dispatch(ShowEmailQuote(
completer: popCompleter( completer: popCompleter(
context, localization.emailedInvoice), context, localization.emailedQuote),
invoice: invoice, quote: quote,
context: context)); context: context));
break; break;
case EntityAction.clone: case EntityAction.clone:
Navigator.of(context).pop(); Navigator.of(context).pop();
store.dispatch( store.dispatch(
EditInvoice(context: context, invoice: invoice.clone)); EditQuote(context: context, quote: quote.clone));
break; break;
case EntityAction.restore: case EntityAction.restore:
store.dispatch(RestoreInvoiceRequest( store.dispatch(RestoreQuoteRequest(
popCompleter( popCompleter(
context, localization.restoredInvoice), context, localization.restoredQuote),
invoice.id)); quote.id));
break; break;
case EntityAction.archive: case EntityAction.archive:
store.dispatch(ArchiveInvoiceRequest( store.dispatch(ArchiveQuoteRequest(
popCompleter( popCompleter(
context, localization.archivedInvoice), context, localization.archivedQuote),
invoice.id)); quote.id));
break; break;
case EntityAction.delete: case EntityAction.delete:
store.dispatch(DeleteInvoiceRequest( store.dispatch(DeleteQuoteRequest(
popCompleter( popCompleter(
context, localization.deletedInvoice), context, localization.deletedQuote),
invoice.id)); quote.id));
break; break;
} }
}, },
@ -154,26 +154,26 @@ class QuoteListVM {
final localization = AppLocalization.of(context); final localization = AppLocalization.of(context);
if (direction == DismissDirection.endToStart) { if (direction == DismissDirection.endToStart) {
if (invoice.isDeleted || invoice.isArchived) { if (invoice.isDeleted || invoice.isArchived) {
store.dispatch(RestoreInvoiceRequest( store.dispatch(RestoreQuoteRequest(
snackBarCompleter( snackBarCompleter(
context, localization.restoredInvoice), context, localization.restoredQuote),
invoice.id)); invoice.id));
} else { } else {
store.dispatch(ArchiveInvoiceRequest( store.dispatch(ArchiveQuoteRequest(
snackBarCompleter( snackBarCompleter(
context, localization.archivedInvoice), context, localization.archivedQuote),
invoice.id)); invoice.id));
} }
} else if (direction == DismissDirection.startToEnd) { } else if (direction == DismissDirection.startToEnd) {
if (invoice.isDeleted) { if (invoice.isDeleted) {
store.dispatch(RestoreInvoiceRequest( store.dispatch(RestoreQuoteRequest(
snackBarCompleter( snackBarCompleter(
context, localization.restoredInvoice), context, localization.restoredQuote),
invoice.id)); invoice.id));
} else { } else {
store.dispatch(DeleteInvoiceRequest( store.dispatch(DeleteQuoteRequest(
snackBarCompleter( snackBarCompleter(
context, localization.deletedInvoice), context, localization.deletedQuote),
invoice.id)); invoice.id));
} }
} }

View File

@ -294,7 +294,7 @@ class _CustomAppBar extends StatelessWidget implements PreferredSizeWidget {
: null, : null,
user.canEditEntity(quote) && client.hasEmailAddress user.canEditEntity(quote) && client.hasEmailAddress
? ActionMenuChoice( ? ActionMenuChoice(
action: EntityAction.emailInvoice, action: EntityAction.email,
icon: Icons.send, icon: Icons.send,
label: AppLocalization.of(context).email, label: AppLocalization.of(context).email,
) )

View File

@ -111,7 +111,7 @@ class QuoteViewVM {
snackBarCompleter(context, localization.markedQuoteAsSent), snackBarCompleter(context, localization.markedQuoteAsSent),
quote.id)); quote.id));
break; break;
case EntityAction.emailInvoice: case EntityAction.email:
store.dispatch(ShowEmailQuote( store.dispatch(ShowEmailQuote(
completer: completer:
snackBarCompleter(context, localization.emailedQuote), snackBarCompleter(context, localization.emailedQuote),