diff --git a/lib/redux/auth/auth_actions.dart b/lib/redux/auth/auth_actions.dart index 3f70339f2..570676638 100644 --- a/lib/redux/auth/auth_actions.dart +++ b/lib/redux/auth/auth_actions.dart @@ -16,7 +16,7 @@ class UserLoginRequest { final String password; final String url; - UserLoginRequest(this.context, this.email, this.password, [this.url]); + UserLoginRequest(this.email, this.password, this.url, this.context); } class UserLoginSuccess {} diff --git a/lib/redux/product/product_actions.dart b/lib/redux/product/product_actions.dart index 093b9d22e..752afb176 100644 --- a/lib/redux/product/product_actions.dart +++ b/lib/redux/product/product_actions.dart @@ -1,5 +1,6 @@ import 'package:invoiceninja/data/models/models.dart'; import 'package:built_collection/built_collection.dart'; +import 'package:flutter/material.dart'; class LoadProductsAction {} @@ -32,9 +33,10 @@ class SelectProductAction { } class SaveProductRequest { + final BuildContext context; final ProductEntity product; - SaveProductRequest(this.product); + SaveProductRequest(this.product, this.context); } class SaveProductSuccess { diff --git a/lib/redux/product/product_middleware.dart b/lib/redux/product/product_middleware.dart index b5a96b549..b33ccf0fd 100644 --- a/lib/redux/product/product_middleware.dart +++ b/lib/redux/product/product_middleware.dart @@ -1,3 +1,4 @@ +import 'package:flutter/material.dart'; import 'package:path_provider/path_provider.dart'; import 'package:redux/redux.dart'; import 'package:invoiceninja/redux/product/product_actions.dart'; @@ -26,10 +27,22 @@ Middleware _createSaveProduct(ProductsRepository repository) { return (Store store, action, NextDispatcher next) { repository.saveData(store.state.selectedCompany(), store.state.authState, action.product).then( - (product) => store.dispatch(SaveProductSuccess(product)) - ).catchError((error) { + (product) { + store.dispatch(SaveProductSuccess(product)); + Scaffold.of(action.context).showSnackBar( + SnackBar( + content: new Text('Successfully updated product'), + duration: Duration(seconds: 3) + ) + ); + } + ); + /* + .catchError((error) { store.dispatch(SaveProductFailure(error)); }); + */ + /* repository.login(action.email, action.password, action.url).then( diff --git a/lib/ui/auth/login_vm.dart b/lib/ui/auth/login_vm.dart index ba8355eaf..73d8372b2 100644 --- a/lib/ui/auth/login_vm.dart +++ b/lib/ui/auth/login_vm.dart @@ -47,7 +47,7 @@ class _ViewModel { if (store.state.isLoading) { return; } - store.dispatch(UserLoginRequest(context, email.trim(), password.trim(), url.trim())); + store.dispatch(UserLoginRequest(email.trim(), password.trim(), url.trim(), context)); } ); } diff --git a/lib/ui/product/product_details.dart b/lib/ui/product/product_details.dart index 1778d4b6e..66e31948a 100644 --- a/lib/ui/product/product_details.dart +++ b/lib/ui/product/product_details.dart @@ -1,13 +1,12 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -//import 'package:invoiceninja/containers/edit_product.dart'; import 'package:invoiceninja/data/models/models.dart'; import 'package:invoiceninja/ui/app/progress_button.dart'; class DetailsScreen extends StatelessWidget { final ProductEntity product; final Function onDelete; - final Function(ProductEntity) onSaveClicked; + final Function(ProductEntity, BuildContext) onSaveClicked; final bool isLoading; static final GlobalKey _formKey = GlobalKey(); @@ -87,19 +86,23 @@ class DetailsScreen extends StatelessWidget { ), ), ), - ProgressButton( - label: 'SAVE', - isLoading: this.isLoading, - onPressed: () { - _formKey.currentState.save(); - this.onSaveClicked(product.rebuild((b) => b - ..productKey = _productKey.trim() - ..notes = _notes.trim() - ..cost = _cost - )); - }, + new Builder( + builder: (BuildContext context) { + return ProgressButton( + label: 'SAVE', + isLoading: this.isLoading, + onPressed: () { + _formKey.currentState.save(); + this.onSaveClicked(product.rebuild((b) => b + ..productKey = _productKey.trim() + ..notes = _notes.trim() + ..cost = _cost + ), context); + }, + ); + } ), - ], + ] ), ), /* diff --git a/lib/ui/product/product_details_vm.dart b/lib/ui/product/product_details_vm.dart index d399c6fab..54bd9bc6c 100644 --- a/lib/ui/product/product_details_vm.dart +++ b/lib/ui/product/product_details_vm.dart @@ -39,7 +39,7 @@ class ProductDetails extends StatelessWidget { class _ViewModel { final ProductEntity product; final Function onDelete; - final Function(ProductEntity) onSaveClicked; + final Function(ProductEntity, BuildContext) onSaveClicked; final bool isLoading; _ViewModel({ @@ -57,8 +57,8 @@ class _ViewModel { isLoading: store.state.isLoading, product: product, onDelete: () => false, //store.dispatch(DeleteProductAction(product.id)), - onSaveClicked: (ProductEntity product) { - store.dispatch(SaveProductRequest(product)); + onSaveClicked: (ProductEntity product, BuildContext context) { + store.dispatch(SaveProductRequest(product, context)); }, ); }