import 'package:path_provider/path_provider.dart'; import 'package:redux/redux.dart'; import 'package:invoiceninja/redux/dashboard/dashboard_actions.dart'; import 'package:invoiceninja/redux/app/app_state.dart'; import 'package:invoiceninja/data/repositories/dashboard_repository.dart'; import 'package:invoiceninja/data/file_storage.dart'; List> createStoreDashboardMiddleware([ DashboardRepository repository = const DashboardRepository( fileStorage: const FileStorage( '__invoiceninja__', getApplicationDocumentsDirectory, ), ), ]) { final loadDashboard = _createLoadDashboard(repository); return [ TypedMiddleware(loadDashboard), ]; } Middleware _createLoadDashboard(DashboardRepository repository) { return (Store store, action, NextDispatcher next) { repository.loadItem(store.state.selectedCompany(), store.state.authState).then( (data) => store.dispatch(DashboardLoadedAction(data)) ).catchError((error) => store.dispatch(DashboardNotLoadedAction(error))); next(action); }; }