Fix for product list

This commit is contained in:
unknown 2018-05-22 23:08:40 -07:00
parent 231c03ddff
commit f9f51daaf4
5 changed files with 20 additions and 9 deletions

View File

@ -107,6 +107,8 @@ class AppState {
case 5: case 5:
return this.company5; return this.company5;
} }
return this.company1;
} }
ProductState product() { ProductState product() {

View File

@ -43,12 +43,15 @@ List<ProductEntity> _toggleAll(List<ProductEntity> products, ToggleAllAction act
*/ */
ProductState _setLoadedProducts(ProductState productState, ProductsLoadedAction action) { ProductState _setLoadedProducts(ProductState productState, ProductsLoadedAction action) {
return ProductState().copyWith( return productState.copyWith(
map: action.products, map: Map.fromIterable(action.products,
list: action.products, key: (item) => item.id,
value: (item) => item
),
list: action.products.map((product) => product.id).toList(),
); );
} }
ProductState _setNoProducts(ProductState productState, ProductsNotLoadedAction action) { ProductState _setNoProducts(ProductState productState, ProductsNotLoadedAction action) {
return []; return productState;
} }

View File

@ -47,7 +47,8 @@ class _ViewModel {
}); });
factory _ViewModel.from(Store<AppState> store, int id) { factory _ViewModel.from(Store<AppState> 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( return _ViewModel(
product: product, product: product,

View File

@ -6,9 +6,10 @@ import 'package:invoiceninja/data/models/models.dart';
import 'package:invoiceninja/ui/app/loading_indicator.dart'; import 'package:invoiceninja/ui/app/loading_indicator.dart';
import 'package:invoiceninja/ui/product/product_item.dart'; import 'package:invoiceninja/ui/product/product_item.dart';
import 'package:invoiceninja/keys.dart'; import 'package:invoiceninja/keys.dart';
import 'package:invoiceninja/redux/product/product_state.dart';
class ProductList extends StatelessWidget { class ProductList extends StatelessWidget {
final List<ProductEntity> products; final ProductState products;
final Function(ProductEntity, bool) onCheckboxChanged; final Function(ProductEntity, bool) onCheckboxChanged;
ProductList({ ProductList({
@ -29,9 +30,9 @@ class ProductList extends StatelessWidget {
ListView _buildListView() { ListView _buildListView() {
return ListView.builder( return ListView.builder(
key: NinjaKeys.productList, key: NinjaKeys.productList,
itemCount: products.length, itemCount: products.list.length,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
final product = products[index]; final product = products.map[products.list[index]];
return ProductItem( return ProductItem(
product: product, product: product,

View File

@ -7,6 +7,7 @@ import 'package:invoiceninja/data/models/models.dart';
import 'package:invoiceninja/ui/product/product_list.dart'; import 'package:invoiceninja/ui/product/product_list.dart';
import 'package:invoiceninja/redux/product/product_selectors.dart'; import 'package:invoiceninja/redux/product/product_selectors.dart';
import 'package:invoiceninja/redux/app/app_state.dart'; import 'package:invoiceninja/redux/app/app_state.dart';
import 'package:invoiceninja/redux/product/product_state.dart';
class ProductListVM extends StatelessWidget { class ProductListVM extends StatelessWidget {
ProductListVM({Key key}) : super(key: key); ProductListVM({Key key}) : super(key: key);
@ -26,7 +27,7 @@ class ProductListVM extends StatelessWidget {
} }
class _ViewModel { class _ViewModel {
final List<ProductEntity> products; final ProductState products;
final bool loading; final bool loading;
final Function(ProductEntity, bool) onCheckboxChanged; final Function(ProductEntity, bool) onCheckboxChanged;
@ -38,10 +39,13 @@ class _ViewModel {
static _ViewModel fromStore(Store<AppState> store) { static _ViewModel fromStore(Store<AppState> store) {
return _ViewModel( return _ViewModel(
products: store.state.product(),
/*
products: filteredProductsSelector( products: filteredProductsSelector(
productsSelector(store.state), productsSelector(store.state),
//activeFilterSelector(store.state), //activeFilterSelector(store.state),
), ),
*/
loading: store.state.isLoading, loading: store.state.isLoading,
onCheckboxChanged: (product, complete) { onCheckboxChanged: (product, complete) {
/* /*