diff --git a/lib/redux/app/app_state.dart b/lib/redux/app/app_state.dart index f8ebdb677..46da74cea 100644 --- a/lib/redux/app/app_state.dart +++ b/lib/redux/app/app_state.dart @@ -107,6 +107,8 @@ class AppState { case 5: return this.company5; } + + return this.company1; } ProductState product() { diff --git a/lib/redux/product/product_reducer.dart b/lib/redux/product/product_reducer.dart index 7a76f8392..3796d7bbe 100644 --- a/lib/redux/product/product_reducer.dart +++ b/lib/redux/product/product_reducer.dart @@ -43,12 +43,15 @@ List _toggleAll(List products, ToggleAllAction act */ ProductState _setLoadedProducts(ProductState productState, ProductsLoadedAction action) { - return ProductState().copyWith( - map: action.products, - list: action.products, + return productState.copyWith( + map: Map.fromIterable(action.products, + key: (item) => item.id, + value: (item) => item + ), + list: action.products.map((product) => product.id).toList(), ); } ProductState _setNoProducts(ProductState productState, ProductsNotLoadedAction action) { - return []; + return productState; } diff --git a/lib/ui/product/product_details_vm.dart b/lib/ui/product/product_details_vm.dart index bfa7f07f6..c2efbf282 100644 --- a/lib/ui/product/product_details_vm.dart +++ b/lib/ui/product/product_details_vm.dart @@ -47,7 +47,8 @@ class _ViewModel { }); factory _ViewModel.from(Store store, int id) { - final product = productSelector(productsSelector(store.state), id).value; + //final product = productSelector(productsSelector(store.state), id).value; + final product = store.state.product().map[id]; return _ViewModel( product: product, diff --git a/lib/ui/product/product_list.dart b/lib/ui/product/product_list.dart index d048b3324..17cd3b099 100644 --- a/lib/ui/product/product_list.dart +++ b/lib/ui/product/product_list.dart @@ -6,9 +6,10 @@ import 'package:invoiceninja/data/models/models.dart'; import 'package:invoiceninja/ui/app/loading_indicator.dart'; import 'package:invoiceninja/ui/product/product_item.dart'; import 'package:invoiceninja/keys.dart'; +import 'package:invoiceninja/redux/product/product_state.dart'; class ProductList extends StatelessWidget { - final List products; + final ProductState products; final Function(ProductEntity, bool) onCheckboxChanged; ProductList({ @@ -29,9 +30,9 @@ class ProductList extends StatelessWidget { ListView _buildListView() { return ListView.builder( key: NinjaKeys.productList, - itemCount: products.length, + itemCount: products.list.length, itemBuilder: (BuildContext context, int index) { - final product = products[index]; + final product = products.map[products.list[index]]; return ProductItem( product: product, diff --git a/lib/ui/product/product_list_vm.dart b/lib/ui/product/product_list_vm.dart index f96de9f33..fd334d409 100644 --- a/lib/ui/product/product_list_vm.dart +++ b/lib/ui/product/product_list_vm.dart @@ -7,6 +7,7 @@ import 'package:invoiceninja/data/models/models.dart'; import 'package:invoiceninja/ui/product/product_list.dart'; import 'package:invoiceninja/redux/product/product_selectors.dart'; import 'package:invoiceninja/redux/app/app_state.dart'; +import 'package:invoiceninja/redux/product/product_state.dart'; class ProductListVM extends StatelessWidget { ProductListVM({Key key}) : super(key: key); @@ -26,7 +27,7 @@ class ProductListVM extends StatelessWidget { } class _ViewModel { - final List products; + final ProductState products; final bool loading; final Function(ProductEntity, bool) onCheckboxChanged; @@ -38,10 +39,13 @@ class _ViewModel { static _ViewModel fromStore(Store store) { return _ViewModel( + products: store.state.product(), + /* products: filteredProductsSelector( productsSelector(store.state), //activeFilterSelector(store.state), ), + */ loading: store.state.isLoading, onCheckboxChanged: (product, complete) { /*