This commit is contained in:
Hillel Coren 2019-11-10 21:11:02 +02:00
parent 69c90bbaa0
commit 99463872fd
61 changed files with 109 additions and 103 deletions

View File

@ -120,8 +120,8 @@ Map<String, String> _getHeaders(String token) => {
}; };
void _checkResponse(http.Response response) { void _checkResponse(http.Response response) {
//debugPrint('response: ${response.statusCode} ${response.body}', wrapWidth: 1000); debugPrint('response: ${response.statusCode} ${response.body}', wrapWidth: 1000);
print('response: ${response.statusCode} ${response.body}'); //print('response: ${response.statusCode} ${response.body}');
print('headers: ${response.headers}'); print('headers: ${response.headers}');
final version = response.headers['x-app-version']; final version = response.headers['x-app-version'];

View File

@ -309,15 +309,15 @@ void handleClientAction(
break; break;
case EntityAction.restore: case EntityAction.restore:
store.dispatch(RestoreClientRequest( store.dispatch(RestoreClientRequest(
snackBarCompleter(context, localization.restoredClient), clientIds)); snackBarCompleter<Null>(context, localization.restoredClient), clientIds));
break; break;
case EntityAction.archive: case EntityAction.archive:
store.dispatch(ArchiveClientRequest( store.dispatch(ArchiveClientRequest(
snackBarCompleter(context, localization.archivedClient), clientIds)); snackBarCompleter<Null>(context, localization.archivedClient), clientIds));
break; break;
case EntityAction.delete: case EntityAction.delete:
store.dispatch(DeleteClientRequest( store.dispatch(DeleteClientRequest(
snackBarCompleter(context, localization.deletedClient), clientIds)); snackBarCompleter<Null>(context, localization.deletedClient), clientIds));
break; break;
case EntityAction.toggleMultiselect: case EntityAction.toggleMultiselect:
if (!store.state.clientListState.isInMultiselect()) { if (!store.state.clientListState.isInMultiselect()) {

View File

@ -263,17 +263,17 @@ void handleCompanyGatewayAction(BuildContext context,
break; break;
case EntityAction.restore: case EntityAction.restore:
store.dispatch(RestoreCompanyGatewayRequest( store.dispatch(RestoreCompanyGatewayRequest(
snackBarCompleter(context, localization.restoredCompanyGateway), snackBarCompleter<Null>(context, localization.restoredCompanyGateway),
companyGatewayIds)); companyGatewayIds));
break; break;
case EntityAction.archive: case EntityAction.archive:
store.dispatch(ArchiveCompanyGatewayRequest( store.dispatch(ArchiveCompanyGatewayRequest(
snackBarCompleter(context, localization.archivedCompanyGateway), snackBarCompleter<Null>(context, localization.archivedCompanyGateway),
companyGatewayIds)); companyGatewayIds));
break; break;
case EntityAction.delete: case EntityAction.delete:
store.dispatch(DeleteCompanyGatewayRequest( store.dispatch(DeleteCompanyGatewayRequest(
snackBarCompleter(context, localization.deletedCompanyGateway), snackBarCompleter<Null>(context, localization.deletedCompanyGateway),
companyGatewayIds)); companyGatewayIds));
break; break;
case EntityAction.toggleMultiselect: case EntityAction.toggleMultiselect:

View File

@ -253,17 +253,17 @@ void handleDocumentAction(
break; break;
case EntityAction.restore: case EntityAction.restore:
store.dispatch(RestoreDocumentRequest( store.dispatch(RestoreDocumentRequest(
snackBarCompleter(context, localization.restoredDocument), snackBarCompleter<Null>(context, localization.restoredDocument),
documentIds)); documentIds));
break; break;
case EntityAction.archive: case EntityAction.archive:
store.dispatch(ArchiveDocumentRequest( store.dispatch(ArchiveDocumentRequest(
snackBarCompleter(context, localization.archivedDocument), snackBarCompleter<Null>(context, localization.archivedDocument),
documentIds)); documentIds));
break; break;
case EntityAction.delete: case EntityAction.delete:
store.dispatch(DeleteDocumentRequest( store.dispatch(DeleteDocumentRequest(
snackBarCompleter(context, localization.deletedDocument), snackBarCompleter<Null>(context, localization.deletedDocument),
documentIds)); documentIds));
break; break;
case EntityAction.toggleMultiselect: case EntityAction.toggleMultiselect:

View File

@ -287,17 +287,17 @@ void handleExpenseAction(
break; break;
case EntityAction.restore: case EntityAction.restore:
store.dispatch(RestoreExpenseRequest( store.dispatch(RestoreExpenseRequest(
snackBarCompleter(context, localization.restoredExpense), snackBarCompleter<Null>(context, localization.restoredExpense),
expenseIds)); expenseIds));
break; break;
case EntityAction.archive: case EntityAction.archive:
store.dispatch(ArchiveExpenseRequest( store.dispatch(ArchiveExpenseRequest(
snackBarCompleter(context, localization.archivedExpense), snackBarCompleter<Null>(context, localization.archivedExpense),
expenseIds)); expenseIds));
break; break;
case EntityAction.delete: case EntityAction.delete:
store.dispatch(DeleteExpenseRequest( store.dispatch(DeleteExpenseRequest(
snackBarCompleter(context, localization.deletedExpense), expenseIds)); snackBarCompleter<Null>(context, localization.deletedExpense), expenseIds));
break; break;
case EntityAction.toggleMultiselect: case EntityAction.toggleMultiselect:
if (!store.state.expenseListState.isInMultiselect()) { if (!store.state.expenseListState.isInMultiselect()) {

View File

@ -262,15 +262,15 @@ void handleGroupAction(
break; break;
case EntityAction.restore: case EntityAction.restore:
store.dispatch(RestoreGroupRequest( store.dispatch(RestoreGroupRequest(
snackBarCompleter(context, localization.restoredGroup), groupIds)); snackBarCompleter<Null>(context, localization.restoredGroup), groupIds));
break; break;
case EntityAction.archive: case EntityAction.archive:
store.dispatch(ArchiveGroupRequest( store.dispatch(ArchiveGroupRequest(
snackBarCompleter(context, localization.archivedGroup), groupIds)); snackBarCompleter<Null>(context, localization.archivedGroup), groupIds));
break; break;
case EntityAction.delete: case EntityAction.delete:
store.dispatch(DeleteGroupRequest( store.dispatch(DeleteGroupRequest(
snackBarCompleter(context, localization.deletedGroup), groupIds)); snackBarCompleter<Null>(context, localization.deletedGroup), groupIds));
break; break;
case EntityAction.toggleMultiselect: case EntityAction.toggleMultiselect:
if (!store.state.groupListState.isInMultiselect()) { if (!store.state.groupListState.isInMultiselect()) {

View File

@ -372,12 +372,12 @@ void handleInvoiceAction(BuildContext context, List<BaseEntity> invoices,
break; break;
case EntityAction.markSent: case EntityAction.markSent:
store.dispatch(MarkSentInvoiceRequest( store.dispatch(MarkSentInvoiceRequest(
snackBarCompleter(context, localization.markedInvoiceAsSent), snackBarCompleter<Null>(context, localization.markedInvoiceAsSent),
invoice.id)); invoice.id));
break; break;
case EntityAction.sendEmail: case EntityAction.sendEmail:
store.dispatch(ShowEmailInvoice( store.dispatch(ShowEmailInvoice(
completer: snackBarCompleter(context, localization.emailedInvoice), completer: snackBarCompleter<Null>(context, localization.emailedInvoice),
invoice: invoice, invoice: invoice,
context: context)); context: context));
break; break;
@ -394,17 +394,17 @@ void handleInvoiceAction(BuildContext context, List<BaseEntity> invoices,
break; break;
case EntityAction.restore: case EntityAction.restore:
store.dispatch(RestoreInvoiceRequest( store.dispatch(RestoreInvoiceRequest(
snackBarCompleter(context, localization.restoredInvoice), snackBarCompleter<Null>(context, localization.restoredInvoice),
invoiceIds)); invoiceIds));
break; break;
case EntityAction.archive: case EntityAction.archive:
store.dispatch(ArchiveInvoiceRequest( store.dispatch(ArchiveInvoiceRequest(
snackBarCompleter(context, localization.archivedInvoice), snackBarCompleter<Null>(context, localization.archivedInvoice),
invoiceIds)); invoiceIds));
break; break;
case EntityAction.delete: case EntityAction.delete:
store.dispatch(DeleteInvoiceRequest( store.dispatch(DeleteInvoiceRequest(
snackBarCompleter(context, localization.deletedInvoice), invoiceIds)); snackBarCompleter<Null>(context, localization.deletedInvoice), invoiceIds));
break; break;
case EntityAction.toggleMultiselect: case EntityAction.toggleMultiselect:
if (!store.state.invoiceListState.isInMultiselect()) { if (!store.state.invoiceListState.isInMultiselect()) {

View File

@ -274,21 +274,21 @@ void handlePaymentAction(
break; break;
case EntityAction.sendEmail: case EntityAction.sendEmail:
store.dispatch(EmailPaymentRequest( store.dispatch(EmailPaymentRequest(
snackBarCompleter(context, localization.emailedPayment), payment)); snackBarCompleter<Null>(context, localization.emailedPayment), payment));
break; break;
case EntityAction.restore: case EntityAction.restore:
store.dispatch(RestorePaymentRequest( store.dispatch(RestorePaymentRequest(
snackBarCompleter(context, localization.restoredPayment), snackBarCompleter<Null>(context, localization.restoredPayment),
paymentIds)); paymentIds));
break; break;
case EntityAction.archive: case EntityAction.archive:
store.dispatch(ArchivePaymentRequest( store.dispatch(ArchivePaymentRequest(
snackBarCompleter(context, localization.archivedPayment), snackBarCompleter<Null>(context, localization.archivedPayment),
paymentIds)); paymentIds));
break; break;
case EntityAction.delete: case EntityAction.delete:
store.dispatch(DeletePaymentRequest( store.dispatch(DeletePaymentRequest(
snackBarCompleter(context, localization.deletedPayment), paymentIds)); snackBarCompleter<Null>(context, localization.deletedPayment), paymentIds));
break; break;
case EntityAction.toggleMultiselect: case EntityAction.toggleMultiselect:
if (!store.state.paymentListState.isInMultiselect()) { if (!store.state.paymentListState.isInMultiselect()) {

View File

@ -230,17 +230,17 @@ void handleProductAction(
break; break;
case EntityAction.restore: case EntityAction.restore:
store.dispatch(RestoreProductRequest( store.dispatch(RestoreProductRequest(
snackBarCompleter(context, localization.restoredProduct), snackBarCompleter<Null>(context, localization.restoredProduct),
productIds)); productIds));
break; break;
case EntityAction.archive: case EntityAction.archive:
store.dispatch(ArchiveProductRequest( store.dispatch(ArchiveProductRequest(
snackBarCompleter(context, localization.archivedProduct), snackBarCompleter<Null>(context, localization.archivedProduct),
productIds)); productIds));
break; break;
case EntityAction.delete: case EntityAction.delete:
store.dispatch(DeleteProductRequest( store.dispatch(DeleteProductRequest(
snackBarCompleter(context, localization.deletedProduct), productIds)); snackBarCompleter<Null>(context, localization.deletedProduct), productIds));
break; break;
case EntityAction.toggleMultiselect: case EntityAction.toggleMultiselect:
if (!store.state.productListState.isInMultiselect()) { if (!store.state.productListState.isInMultiselect()) {

View File

@ -287,19 +287,19 @@ void handleProjectAction(
break; break;
case EntityAction.restore: case EntityAction.restore:
store.dispatch(RestoreProjectRequest( store.dispatch(RestoreProjectRequest(
snackBarCompleter( snackBarCompleter<Null>(
context, AppLocalization.of(context).restoredProject), context, AppLocalization.of(context).restoredProject),
projectIds)); projectIds));
break; break;
case EntityAction.archive: case EntityAction.archive:
store.dispatch(ArchiveProjectRequest( store.dispatch(ArchiveProjectRequest(
snackBarCompleter( snackBarCompleter<Null>(
context, AppLocalization.of(context).archivedProject), context, AppLocalization.of(context).archivedProject),
projectIds)); projectIds));
break; break;
case EntityAction.delete: case EntityAction.delete:
store.dispatch(DeleteProjectRequest( store.dispatch(DeleteProjectRequest(
snackBarCompleter( snackBarCompleter<Null>(
context, AppLocalization.of(context).deletedProject), context, AppLocalization.of(context).deletedProject),
projectIds)); projectIds));
break; break;

View File

@ -404,12 +404,12 @@ Future handleQuoteAction(
break; break;
case EntityAction.markSent: case EntityAction.markSent:
store.dispatch(MarkSentQuoteRequest( store.dispatch(MarkSentQuoteRequest(
snackBarCompleter(context, localization.markedQuoteAsSent), snackBarCompleter<Null>(context, localization.markedQuoteAsSent),
quote.id)); quote.id));
break; break;
case EntityAction.sendEmail: case EntityAction.sendEmail:
store.dispatch(ShowEmailQuote( store.dispatch(ShowEmailQuote(
completer: snackBarCompleter(context, localization.emailedQuote), completer: snackBarCompleter<Null>(context, localization.emailedQuote),
quote: quote, quote: quote,
context: context)); context: context));
break; break;
@ -422,15 +422,15 @@ Future handleQuoteAction(
break; break;
case EntityAction.restore: case EntityAction.restore:
store.dispatch(RestoreQuoteRequest( store.dispatch(RestoreQuoteRequest(
snackBarCompleter(context, localization.restoredQuote), quoteIds)); snackBarCompleter<Null>(context, localization.restoredQuote), quoteIds));
break; break;
case EntityAction.archive: case EntityAction.archive:
store.dispatch(ArchiveQuoteRequest( store.dispatch(ArchiveQuoteRequest(
snackBarCompleter(context, localization.archivedQuote), quoteIds)); snackBarCompleter<Null>(context, localization.archivedQuote), quoteIds));
break; break;
case EntityAction.delete: case EntityAction.delete:
store.dispatch(DeleteQuoteRequest( store.dispatch(DeleteQuoteRequest(
snackBarCompleter(context, localization.deletedQuote), quoteIds)); snackBarCompleter<Null>(context, localization.deletedQuote), quoteIds));
break; break;
case EntityAction.toggleMultiselect: case EntityAction.toggleMultiselect:
if (!store.state.quoteListState.isInMultiselect()) { if (!store.state.quoteListState.isInMultiselect()) {

View File

@ -341,15 +341,15 @@ void handleTaskAction(
break; break;
case EntityAction.restore: case EntityAction.restore:
store.dispatch(RestoreTaskRequest( store.dispatch(RestoreTaskRequest(
snackBarCompleter(context, localization.restoredTask), taskIds)); snackBarCompleter<Null>(context, localization.restoredTask), taskIds));
break; break;
case EntityAction.archive: case EntityAction.archive:
store.dispatch(ArchiveTaskRequest( store.dispatch(ArchiveTaskRequest(
snackBarCompleter(context, localization.archivedTask), taskIds)); snackBarCompleter<Null>(context, localization.archivedTask), taskIds));
break; break;
case EntityAction.delete: case EntityAction.delete:
store.dispatch(DeleteTaskRequest( store.dispatch(DeleteTaskRequest(
snackBarCompleter(context, localization.deletedTask), taskIds)); snackBarCompleter<Null>(context, localization.deletedTask), taskIds));
break; break;
case EntityAction.toggleMultiselect: case EntityAction.toggleMultiselect:
if (!store.state.taskListState.isInMultiselect()) { if (!store.state.taskListState.isInMultiselect()) {

View File

@ -259,17 +259,17 @@ void handleTaxRateAction(
break; break;
case EntityAction.restore: case EntityAction.restore:
store.dispatch(RestoreTaxRateRequest( store.dispatch(RestoreTaxRateRequest(
snackBarCompleter(context, localization.restoredTaxRate), snackBarCompleter<Null>(context, localization.restoredTaxRate),
taxRateIds)); taxRateIds));
break; break;
case EntityAction.archive: case EntityAction.archive:
store.dispatch(ArchiveTaxRateRequest( store.dispatch(ArchiveTaxRateRequest(
snackBarCompleter(context, localization.archivedTaxRate), snackBarCompleter<Null>(context, localization.archivedTaxRate),
taxRateIds)); taxRateIds));
break; break;
case EntityAction.delete: case EntityAction.delete:
store.dispatch(DeleteTaxRateRequest( store.dispatch(DeleteTaxRateRequest(
snackBarCompleter(context, localization.deletedTaxRate), taxRateIds)); snackBarCompleter<Null>(context, localization.deletedTaxRate), taxRateIds));
break; break;
case EntityAction.toggleMultiselect: case EntityAction.toggleMultiselect:
if (!store.state.taxRateListState.isInMultiselect()) { if (!store.state.taxRateListState.isInMultiselect()) {

View File

@ -250,15 +250,15 @@ void handleUserAction(
break; break;
case EntityAction.restore: case EntityAction.restore:
store.dispatch(RestoreUserRequest( store.dispatch(RestoreUserRequest(
snackBarCompleter(context, localization.restoredUser), userIds)); snackBarCompleter<Null>(context, localization.restoredUser), userIds));
break; break;
case EntityAction.archive: case EntityAction.archive:
store.dispatch(ArchiveUserRequest( store.dispatch(ArchiveUserRequest(
snackBarCompleter(context, localization.archivedUser), userIds)); snackBarCompleter<Null>(context, localization.archivedUser), userIds));
break; break;
case EntityAction.delete: case EntityAction.delete:
store.dispatch(DeleteUserRequest( store.dispatch(DeleteUserRequest(
snackBarCompleter(context, localization.deletedUser), userIds)); snackBarCompleter<Null>(context, localization.deletedUser), userIds));
break; break;
case EntityAction.toggleMultiselect: case EntityAction.toggleMultiselect:
if (!store.state.userListState.isInMultiselect()) { if (!store.state.userListState.isInMultiselect()) {

View File

@ -296,15 +296,15 @@ void handleVendorAction(
break; break;
case EntityAction.restore: case EntityAction.restore:
store.dispatch(RestoreVendorRequest( store.dispatch(RestoreVendorRequest(
snackBarCompleter(context, localization.restoredVendor), vendorIds)); snackBarCompleter<Null>(context, localization.restoredVendor), vendorIds));
break; break;
case EntityAction.archive: case EntityAction.archive:
store.dispatch(ArchiveVendorRequest( store.dispatch(ArchiveVendorRequest(
snackBarCompleter(context, localization.archivedVendor), vendorIds)); snackBarCompleter<Null>(context, localization.archivedVendor), vendorIds));
break; break;
case EntityAction.delete: case EntityAction.delete:
store.dispatch(DeleteVendorRequest( store.dispatch(DeleteVendorRequest(
snackBarCompleter(context, localization.deletedVendor), vendorIds)); snackBarCompleter<Null>(context, localization.deletedVendor), vendorIds));
break; break;
case EntityAction.toggleMultiselect: case EntityAction.toggleMultiselect:
if (!store.state.vendorListState.isInMultiselect()) { if (!store.state.vendorListState.isInMultiselect()) {

View File

@ -64,7 +64,7 @@ class ClientListVM {
if (store.state.isLoading) { if (store.state.isLoading) {
return Future<Null>(null); return Future<Null>(null);
} }
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadClients(completer: completer, force: true)); store.dispatch(LoadClients(completer: completer, force: true));
return completer.future; return completer.future;

View File

@ -64,7 +64,7 @@ class ClientViewVM {
ClientEntity(id: state.clientUIState.selectedId); ClientEntity(id: state.clientUIState.selectedId);
Future<Null> _handleRefresh(BuildContext context, bool loadActivities) { Future<Null> _handleRefresh(BuildContext context, bool loadActivities) {
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadClient( store.dispatch(LoadClient(
completer: completer, completer: completer,

View File

@ -54,7 +54,7 @@ class CompanyGatewayListVM {
if (store.state.isLoading) { if (store.state.isLoading) {
return Future<Null>(null); return Future<Null>(null);
} }
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadCompanyGateways(completer: completer, force: true)); store.dispatch(LoadCompanyGateways(completer: completer, force: true));
return completer.future; return completer.future;

View File

@ -55,7 +55,7 @@ class CompanyGatewayViewVM {
CompanyGatewayEntity(id: state.companyGatewayUIState.selectedId); CompanyGatewayEntity(id: state.companyGatewayUIState.selectedId);
Future<Null> _handleRefresh(BuildContext context) { Future<Null> _handleRefresh(BuildContext context) {
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadCompanyGateway( store.dispatch(LoadCompanyGateway(
completer: completer, companyGatewayId: companyGateway.id)); completer: completer, companyGatewayId: companyGateway.id));

View File

@ -54,7 +54,7 @@ class DashboardVM {
if (store.state.isLoading) { if (store.state.isLoading) {
return Future<Null>(null); return Future<Null>(null);
} }
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadDashboard(completer, true)); store.dispatch(LoadDashboard(completer, true));
return completer.future; return completer.future;

View File

@ -53,7 +53,7 @@ class DocumentListVM {
if (store.state.isLoading) { if (store.state.isLoading) {
return Future<Null>(null); return Future<Null>(null);
} }
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadDocuments(completer: completer, force: true)); store.dispatch(LoadDocuments(completer: completer, force: true));
return completer.future; return completer.future;

View File

@ -55,7 +55,7 @@ class DocumentViewVM {
DocumentEntity(id: state.documentUIState.selectedId); DocumentEntity(id: state.documentUIState.selectedId);
Future<Null> _handleRefresh(BuildContext context) { Future<Null> _handleRefresh(BuildContext context) {
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch( store.dispatch(
LoadDocument(completer: completer, documentId: document.id)); LoadDocument(completer: completer, documentId: document.id));

View File

@ -55,7 +55,7 @@ class ExpenseListVM {
if (store.state.isLoading) { if (store.state.isLoading) {
return Future<Null>(null); return Future<Null>(null);
} }
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadExpenses(completer: completer, force: true)); store.dispatch(LoadExpenses(completer: completer, force: true));
return completer.future; return completer.future;

View File

@ -67,7 +67,7 @@ class ExpenseViewVM {
final invoice = state.invoiceState.map[expense.invoiceId]; final invoice = state.invoiceState.map[expense.invoiceId];
Future<Null> _handleRefresh(BuildContext context) { Future<Null> _handleRefresh(BuildContext context) {
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadExpense(completer: completer, expenseId: expense.id)); store.dispatch(LoadExpense(completer: completer, expenseId: expense.id));
return completer.future; return completer.future;
@ -170,7 +170,7 @@ class ExpenseViewVM {
}, },
onDeleteDocument: (BuildContext context, DocumentEntity document) { onDeleteDocument: (BuildContext context, DocumentEntity document) {
store.dispatch(DeleteDocumentRequest( store.dispatch(DeleteDocumentRequest(
snackBarCompleter( snackBarCompleter<Null>(
context, AppLocalization.of(context).deletedDocument), context, AppLocalization.of(context).deletedDocument),
[document.id])); [document.id]));
}); });

View File

@ -75,7 +75,7 @@ class GroupEditVM {
store.dispatch(UpdateCurrentRoute(state.uiState.previousRoute)); store.dispatch(UpdateCurrentRoute(state.uiState.previousRoute));
}, },
onSavePressed: (BuildContext context) { onSavePressed: (BuildContext context) {
final Completer<GroupEntity> completer = new Completer<GroupEntity>(); final Completer<GroupEntity> completer = Completer<GroupEntity>();
store.dispatch(SaveGroupRequest(completer: completer, group: group)); store.dispatch(SaveGroupRequest(completer: completer, group: group));
return completer.future.then((savedGroup) { return completer.future.then((savedGroup) {
if (isMobile(context)) { if (isMobile(context)) {

View File

@ -54,7 +54,7 @@ class GroupListVM {
if (store.state.isLoading) { if (store.state.isLoading) {
return Future<Null>(null); return Future<Null>(null);
} }
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadGroups(completer: completer, force: true)); store.dispatch(LoadGroups(completer: completer, force: true));
return completer.future; return completer.future;

View File

@ -57,7 +57,7 @@ class GroupViewVM {
GroupEntity(id: state.groupUIState.selectedId); GroupEntity(id: state.groupUIState.selectedId);
Future<Null> _handleRefresh(BuildContext context) { Future<Null> _handleRefresh(BuildContext context) {
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadGroup(completer: completer, groupId: group.id)); store.dispatch(LoadGroup(completer: completer, groupId: group.id));
return completer.future; return completer.future;

View File

@ -108,7 +108,7 @@ class InvoiceListVM extends EntityListVM {
if (store.state.isLoading) { if (store.state.isLoading) {
return Future<Null>(null); return Future<Null>(null);
} }
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadInvoices(completer: completer, force: true)); store.dispatch(LoadInvoices(completer: completer, force: true));
return completer.future; return completer.future;

View File

@ -120,7 +120,7 @@ class InvoiceViewVM extends EntityViewVM {
final client = state.clientState.get(invoice.clientId); final client = state.clientState.get(invoice.clientId);
Future<Null> _handleRefresh(BuildContext context) { Future<Null> _handleRefresh(BuildContext context) {
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadInvoice(completer: completer, invoiceId: invoice.id)); store.dispatch(LoadInvoice(completer: completer, invoiceId: invoice.id));
return completer.future; return completer.future;
@ -211,7 +211,7 @@ class InvoiceViewVM extends EntityViewVM {
}, },
onDeleteDocument: (BuildContext context, DocumentEntity document) { onDeleteDocument: (BuildContext context, DocumentEntity document) {
store.dispatch(DeleteDocumentRequest( store.dispatch(DeleteDocumentRequest(
snackBarCompleter( snackBarCompleter<Null>(
context, AppLocalization.of(context).deletedDocument), context, AppLocalization.of(context).deletedDocument),
[document.id])); [document.id]));
}, },

View File

@ -55,7 +55,7 @@ class PaymentListVM {
if (store.state.isLoading) { if (store.state.isLoading) {
return Future<Null>(null); return Future<Null>(null);
} }
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadPayments(completer: completer, force: true)); store.dispatch(LoadPayments(completer: completer, force: true));
return completer.future; return completer.future;

View File

@ -48,7 +48,7 @@ class ProductListVM {
if (store.state.isLoading) { if (store.state.isLoading) {
return Future<Null>(null); return Future<Null>(null);
} }
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadProducts(completer: completer, force: true)); store.dispatch(LoadProducts(completer: completer, force: true));
return completer.future; return completer.future;

View File

@ -55,7 +55,7 @@ class ProductViewVM {
/* /*
Future<Null> _handleRefresh(BuildContext context, bool loadActivities) { Future<Null> _handleRefresh(BuildContext context, bool loadActivities) {
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadProduct( store.dispatch(LoadProduct(
completer: completer, completer: completer,

View File

@ -54,7 +54,7 @@ class ProjectListVM {
if (store.state.isLoading) { if (store.state.isLoading) {
return Future<Null>(null); return Future<Null>(null);
} }
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadProjects(completer: completer, force: true)); store.dispatch(LoadProjects(completer: completer, force: true));
return completer.future; return completer.future;

View File

@ -60,7 +60,7 @@ class ProjectViewVM {
ClientEntity(id: project.clientId); ClientEntity(id: project.clientId);
Future<Null> _handleRefresh(BuildContext context) { Future<Null> _handleRefresh(BuildContext context) {
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadProject(completer: completer, projectId: project.id)); store.dispatch(LoadProject(completer: completer, projectId: project.id));
return completer.future; return completer.future;

View File

@ -72,7 +72,7 @@ class QuoteListVM extends EntityListVM {
if (store.state.isLoading) { if (store.state.isLoading) {
return Future<Null>(null); return Future<Null>(null);
} }
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadQuotes(completer: completer, force: true)); store.dispatch(LoadQuotes(completer: completer, force: true));
return completer.future; return completer.future;

View File

@ -85,7 +85,7 @@ class QuoteViewVM extends EntityViewVM {
ClientEntity(id: quote.clientId); ClientEntity(id: quote.clientId);
Future<Null> _handleRefresh(BuildContext context) { Future<Null> _handleRefresh(BuildContext context) {
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadQuote(completer: completer, quoteId: quote.id)); store.dispatch(LoadQuote(completer: completer, quoteId: quote.id));
return completer.future; return completer.future;
@ -156,7 +156,7 @@ class QuoteViewVM extends EntityViewVM {
}, },
onDeleteDocument: (BuildContext context, DocumentEntity document) { onDeleteDocument: (BuildContext context, DocumentEntity document) {
store.dispatch(DeleteDocumentRequest( store.dispatch(DeleteDocumentRequest(
snackBarCompleter( snackBarCompleter<Null>(
context, AppLocalization.of(context).deletedDocument), context, AppLocalization.of(context).deletedDocument),
[document.id])); [document.id]));
}, },

View File

@ -54,7 +54,7 @@ class ClientPortalVM {
store.dispatch(UpdateCompany(company: company)), store.dispatch(UpdateCompany(company: company)),
onSavePressed: (context) { onSavePressed: (context) {
final settingsUIState = state.uiState.settingsUIState; final settingsUIState = state.uiState.settingsUIState;
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).savedSettings); context, AppLocalization.of(context).savedSettings);
switch (settingsUIState.entityType) { switch (settingsUIState.entityType) {
case EntityType.company: case EntityType.company:

View File

@ -2,8 +2,10 @@ import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_redux/flutter_redux.dart'; import 'package:flutter_redux/flutter_redux.dart';
import 'package:invoiceninja_flutter/constants.dart'; import 'package:invoiceninja_flutter/constants.dart';
import 'package:invoiceninja_flutter/data/models/client_model.dart';
import 'package:invoiceninja_flutter/data/models/company_model.dart'; import 'package:invoiceninja_flutter/data/models/company_model.dart';
import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/data/models/entities.dart';
import 'package:invoiceninja_flutter/data/models/group_model.dart';
import 'package:invoiceninja_flutter/redux/client/client_actions.dart'; import 'package:invoiceninja_flutter/redux/client/client_actions.dart';
import 'package:invoiceninja_flutter/redux/group/group_actions.dart'; import 'package:invoiceninja_flutter/redux/group/group_actions.dart';
import 'package:invoiceninja_flutter/redux/settings/settings_actions.dart'; import 'package:invoiceninja_flutter/redux/settings/settings_actions.dart';
@ -54,19 +56,23 @@ class CompanyDetailsVM {
store.dispatch(UpdateCompany(company: company)), store.dispatch(UpdateCompany(company: company)),
onSavePressed: (context) { onSavePressed: (context) {
final settingsUIState = state.uiState.settingsUIState; final settingsUIState = state.uiState.settingsUIState;
final completer = snackBarCompleter(
context, AppLocalization.of(context).savedSettings);
switch (settingsUIState.entityType) { switch (settingsUIState.entityType) {
case EntityType.company: case EntityType.company:
final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).savedSettings);
store.dispatch(SaveCompanyRequest( store.dispatch(SaveCompanyRequest(
completer: completer, completer: completer,
company: settingsUIState.userCompany.company)); company: settingsUIState.userCompany.company));
break; break;
case EntityType.group: case EntityType.group:
final completer = snackBarCompleter<GroupEntity>(
context, AppLocalization.of(context).savedSettings);
store.dispatch(SaveGroupRequest( store.dispatch(SaveGroupRequest(
completer: completer, group: settingsUIState.group)); completer: completer, group: settingsUIState.group));
break; break;
case EntityType.client: case EntityType.client:
final completer = snackBarCompleter<ClientEntity>(
context, AppLocalization.of(context).savedSettings);
store.dispatch(SaveClientRequest( store.dispatch(SaveClientRequest(
completer: completer, client: settingsUIState.client)); completer: completer, client: settingsUIState.client));
break; break;
@ -74,7 +80,7 @@ class CompanyDetailsVM {
}, },
onUploadLogo: (context, path) { onUploadLogo: (context, path) {
final type = state.uiState.settingsUIState.entityType; final type = state.uiState.settingsUIState.entityType;
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).uploadedLogo); context, AppLocalization.of(context).uploadedLogo);
store.dispatch( store.dispatch(
UploadLogoRequest(completer: completer, path: path, type: type)); UploadLogoRequest(completer: completer, path: path, type: type));

View File

@ -49,7 +49,7 @@ class CustomFieldsVM {
store.dispatch(UpdateCompany(company: company)), store.dispatch(UpdateCompany(company: company)),
onSavePressed: (context) { onSavePressed: (context) {
final settingsUIState = state.uiState.settingsUIState; final settingsUIState = state.uiState.settingsUIState;
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).savedSettings); context, AppLocalization.of(context).savedSettings);
switch (settingsUIState.entityType) { switch (settingsUIState.entityType) {
case EntityType.company: case EntityType.company:

View File

@ -46,7 +46,7 @@ class DeviceSettingsVM {
static DeviceSettingsVM fromStore(Store<AppState> store) { static DeviceSettingsVM fromStore(Store<AppState> store) {
void _refreshData(BuildContext context) async { void _refreshData(BuildContext context) async {
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete, context, AppLocalization.of(context).refreshComplete,
shouldPop: true); shouldPop: true);
store.dispatch(RefreshData( store.dispatch(RefreshData(

View File

@ -50,7 +50,7 @@ class EmailSettingsVM {
}, },
onSavePressed: (context) { onSavePressed: (context) {
final settingsUIState = state.uiState.settingsUIState; final settingsUIState = state.uiState.settingsUIState;
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).savedSettings); context, AppLocalization.of(context).savedSettings);
switch (settingsUIState.entityType) { switch (settingsUIState.entityType) {
case EntityType.company: case EntityType.company:

View File

@ -55,7 +55,7 @@ class GeneratedNumbersVM {
}, },
onSavePressed: (context) { onSavePressed: (context) {
final settingsUIState = state.uiState.settingsUIState; final settingsUIState = state.uiState.settingsUIState;
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).savedSettings); context, AppLocalization.of(context).savedSettings);
switch (settingsUIState.entityType) { switch (settingsUIState.entityType) {
case EntityType.company: case EntityType.company:

View File

@ -52,7 +52,7 @@ class InvoiceDesignVM {
}, },
onSavePressed: (context) { onSavePressed: (context) {
final settingsUIState = state.uiState.settingsUIState; final settingsUIState = state.uiState.settingsUIState;
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).savedSettings); context, AppLocalization.of(context).savedSettings);
switch (settingsUIState.entityType) { switch (settingsUIState.entityType) {
case EntityType.company: case EntityType.company:

View File

@ -55,7 +55,7 @@ class LocalizationSettingsVM {
store.dispatch(UpdateCompany(company: company)), store.dispatch(UpdateCompany(company: company)),
onSavePressed: (context) { onSavePressed: (context) {
final settingsUIState = state.uiState.settingsUIState; final settingsUIState = state.uiState.settingsUIState;
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).savedSettings); context, AppLocalization.of(context).savedSettings);
switch (settingsUIState.entityType) { switch (settingsUIState.entityType) {
case EntityType.company: case EntityType.company:

View File

@ -46,7 +46,7 @@ class ProductSettingsVM {
store.dispatch(UpdateCompany(company: company)), store.dispatch(UpdateCompany(company: company)),
onSavePressed: (context) { onSavePressed: (context) {
final settingsUIState = state.uiState.settingsUIState; final settingsUIState = state.uiState.settingsUIState;
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).savedSettings); context, AppLocalization.of(context).savedSettings);
store.dispatch(SaveCompanyRequest( store.dispatch(SaveCompanyRequest(
completer: completer, completer: completer,

View File

@ -58,7 +58,7 @@ class TaxSettingsVM {
store.dispatch(UpdateCompany(company: company)), store.dispatch(UpdateCompany(company: company)),
onSavePressed: (context) { onSavePressed: (context) {
final settingsUIState = state.uiState.settingsUIState; final settingsUIState = state.uiState.settingsUIState;
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).savedSettings); context, AppLocalization.of(context).savedSettings);
store.dispatch(SaveCompanyRequest( store.dispatch(SaveCompanyRequest(
completer: completer, completer: completer,

View File

@ -51,7 +51,7 @@ class TemplatesAndRemindersVM {
}, },
onSavePressed: (context) { onSavePressed: (context) {
final settingsUIState = state.uiState.settingsUIState; final settingsUIState = state.uiState.settingsUIState;
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).savedSettings); context, AppLocalization.of(context).savedSettings);
switch (settingsUIState.entityType) { switch (settingsUIState.entityType) {
case EntityType.company: case EntityType.company:

View File

@ -43,7 +43,7 @@ class UserDetailsVM {
user: state.uiState.settingsUIState.userCompany.user, user: state.uiState.settingsUIState.userCompany.user,
onChanged: (user) => store.dispatch(UpdateUser(user: user)), onChanged: (user) => store.dispatch(UpdateUser(user: user)),
onSavePressed: (context) { onSavePressed: (context) {
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).savedSettings); context, AppLocalization.of(context).savedSettings);
store.dispatch(SaveUserRequest( store.dispatch(SaveUserRequest(
completer: completer, completer: completer,

View File

@ -50,7 +50,7 @@ class WorkflowSettingsVM {
}, },
onSavePressed: (context) { onSavePressed: (context) {
final settingsUIState = state.uiState.settingsUIState; final settingsUIState = state.uiState.settingsUIState;
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).savedSettings); context, AppLocalization.of(context).savedSettings);
switch (settingsUIState.entityType) { switch (settingsUIState.entityType) {
case EntityType.company: case EntityType.company:

View File

@ -56,7 +56,7 @@ class TaskListVM {
if (store.state.isLoading) { if (store.state.isLoading) {
return Future<Null>(null); return Future<Null>(null);
} }
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadTasks(completer: completer, force: true)); store.dispatch(LoadTasks(completer: completer, force: true));
return completer.future; return completer.future;

View File

@ -68,7 +68,7 @@ class TaskViewVM {
final invoice = state.invoiceState.map[task.invoiceId]; final invoice = state.invoiceState.map[task.invoiceId];
Future<Null> _handleRefresh(BuildContext context) { Future<Null> _handleRefresh(BuildContext context) {
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadTask(completer: completer, taskId: task.id)); store.dispatch(LoadTask(completer: completer, taskId: task.id));
return completer.future; return completer.future;

View File

@ -53,7 +53,7 @@ class TaxRateListVM {
if (store.state.isLoading) { if (store.state.isLoading) {
return Future<Null>(null); return Future<Null>(null);
} }
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadTaxRates(completer: completer, force: true)); store.dispatch(LoadTaxRates(completer: completer, force: true));
return completer.future; return completer.future;

View File

@ -54,7 +54,7 @@ class TaxRateViewVM {
TaxRateEntity(id: state.taxRateUIState.selectedId); TaxRateEntity(id: state.taxRateUIState.selectedId);
Future<Null> _handleRefresh(BuildContext context) { Future<Null> _handleRefresh(BuildContext context) {
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadTaxRate(completer: completer, taxRateId: taxRate.id)); store.dispatch(LoadTaxRate(completer: completer, taxRateId: taxRate.id));
return completer.future; return completer.future;

View File

@ -53,7 +53,7 @@ class UserListVM {
if (store.state.isLoading) { if (store.state.isLoading) {
return Future<Null>(null); return Future<Null>(null);
} }
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadUsers(completer: completer, force: true)); store.dispatch(LoadUsers(completer: completer, force: true));
return completer.future; return completer.future;

View File

@ -61,7 +61,7 @@ class UserViewVM {
UserEntity(id: state.userUIState.selectedId); UserEntity(id: state.userUIState.selectedId);
Future<Null> _handleRefresh(BuildContext context) { Future<Null> _handleRefresh(BuildContext context) {
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadUser(completer: completer, userId: user.id)); store.dispatch(LoadUser(completer: completer, userId: user.id));
return completer.future; return completer.future;

View File

@ -53,7 +53,7 @@ class VendorListVM {
if (store.state.isLoading) { if (store.state.isLoading) {
return Future<Null>(null); return Future<Null>(null);
} }
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadVendors(completer: completer, force: true)); store.dispatch(LoadVendors(completer: completer, force: true));
return completer.future; return completer.future;

View File

@ -58,7 +58,7 @@ class VendorViewVM {
VendorEntity(id: state.vendorUIState.selectedId); VendorEntity(id: state.vendorUIState.selectedId);
Future<Null> _handleRefresh(BuildContext context) { Future<Null> _handleRefresh(BuildContext context) {
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadVendor(completer: completer, vendorId: vendor.id)); store.dispatch(LoadVendor(completer: completer, vendorId: vendor.id));
return completer.future; return completer.future;

View File

@ -25,9 +25,9 @@ Completer<Null> refreshCompleter(BuildContext context) {
} }
*/ */
Completer<Null> snackBarCompleter(BuildContext context, String message, Completer<T> snackBarCompleter<T>(BuildContext context, String message,
{bool shouldPop = false}) { {bool shouldPop = false}) {
final Completer<Null> completer = Completer<Null>(); final Completer<T> completer = Completer<T>();
completer.future.then((_) { completer.future.then((_) {
if (shouldPop) { if (shouldPop) {

View File

@ -255,15 +255,15 @@ void handleStubAction(
break; break;
case EntityAction.restore: case EntityAction.restore:
store.dispatch(RestoreStubRequest( store.dispatch(RestoreStubRequest(
snackBarCompleter(context, localization.restoredStub), stub.id)); snackBarCompleter<Null>(context, localization.restoredStub), stub.id));
break; break;
case EntityAction.archive: case EntityAction.archive:
store.dispatch(ArchiveStubRequest( store.dispatch(ArchiveStubRequest(
snackBarCompleter(context, localization.archivedStub), stub.id)); snackBarCompleter<Null>(context, localization.archivedStub), stub.id));
break; break;
case EntityAction.delete: case EntityAction.delete:
store.dispatch(DeleteStubRequest( store.dispatch(DeleteStubRequest(
snackBarCompleter(context, localization.deletedStub), stub.id)); snackBarCompleter<Null>(context, localization.deletedStub), stub.id));
break; break;
case EntityAction.toggleMultiselect: case EntityAction.toggleMultiselect:
if (!store.state.stubListState.isInMultiselect()) { if (!store.state.stubListState.isInMultiselect()) {

View File

@ -53,7 +53,7 @@ class StubListVM {
if (store.state.isLoading) { if (store.state.isLoading) {
return Future<Null>(null); return Future<Null>(null);
} }
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadStubs(completer: completer, force: true)); store.dispatch(LoadStubs(completer: completer, force: true));
return completer.future; return completer.future;

View File

@ -54,7 +54,7 @@ class StubViewVM {
StubEntity(id: state.stubUIState.selectedId); StubEntity(id: state.stubUIState.selectedId);
Future<Null> _handleRefresh(BuildContext context) { Future<Null> _handleRefresh(BuildContext context) {
final completer = snackBarCompleter( final completer = snackBarCompleter<Null>(
context, AppLocalization.of(context).refreshComplete); context, AppLocalization.of(context).refreshComplete);
store.dispatch(LoadStub(completer: completer, stubId: stub.id)); store.dispatch(LoadStub(completer: completer, stubId: stub.id));
return completer.future; return completer.future;