diff --git a/lib/ui/credit/credit_screen_vm.dart b/lib/ui/credit/credit_screen_vm.dart new file mode 100644 index 000000000..6618173c5 --- /dev/null +++ b/lib/ui/credit/credit_screen_vm.dart @@ -0,0 +1,59 @@ +import 'package:built_collection/built_collection.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; +import 'package:flutter_redux/flutter_redux.dart'; +import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/redux/app/app_state.dart'; +import 'package:invoiceninja_flutter/redux/credit/credit_actions.dart'; +import 'package:invoiceninja_flutter/redux/credit/credit_selectors.dart'; +import 'package:redux/redux.dart'; + +import 'credit_screen.dart'; + +class CreditScreenBuilder extends StatelessWidget { + const CreditScreenBuilder({Key key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return StoreConnector( + converter: CreditScreenVM.fromStore, + builder: (context, vm) { + return CreditScreen( + viewModel: vm, + ); + }, + ); + } +} + +class CreditScreenVM { + CreditScreenVM({ + @required this.isInMultiselect, + @required this.creditList, + @required this.userCompany, + @required this.onEntityAction, + @required this.creditMap, + }); + + final bool isInMultiselect; + final UserCompanyEntity userCompany; + final List creditList; + final Function(BuildContext, List, EntityAction) onEntityAction; + final BuiltMap creditMap; + + static CreditScreenVM fromStore(Store store) { + final state = store.state; + + return CreditScreenVM( + creditMap: state.creditState.map, + creditList: memoizedFilteredCreditList(state.creditState.map, + state.creditState.list, state.clientState.map, state.creditListState), + userCompany: state.userCompany, + isInMultiselect: state.creditListState.isInMultiselect(), + onEntityAction: (BuildContext context, List credits, + EntityAction action) => + handleCreditAction(context, credits, action), + ); + } +} diff --git a/starter.sh b/starter.sh index baaf0fa27..d28fac979 100644 --- a/starter.sh +++ b/starter.sh @@ -169,7 +169,8 @@ else './stubs/ui/stub/stub_list_vm' './stubs/ui/stub/stub_list' './stubs/ui/stub/stub_presenter' - './stubs/ui/stub/stub_screen') + './stubs/ui/stub/stub_screen' + './stubs/ui/stub/stub_screen_vm') for i in "${files[@]}" do