import 'package:time_progress_calculator/actions/timer_actions.dart'; import 'package:time_progress_calculator/models/timer.dart'; import 'package:redux/redux.dart'; final timersReducer = combineReducers>([ TypedReducer, TimersLoadedAction>(_setLoadedTimers), TypedReducer, TimersNotLoadedAction>(_setEmptyTimers), TypedReducer, AddTimerAction>(_addTimer), TypedReducer, UpdateTimerAction>(_updateTimer), TypedReducer, DeleteTimerAction>(_deleteTimer), ]); List _setLoadedTimers(List timers, TimersLoadedAction action) { return action.timers; } List _setEmptyTimers(List timers, TimersNotLoadedAction action) { return []; } List _addTimer(List timers, AddTimerAction action) { return List.from(timers) ..add(action.timer) ..toList(growable: false); } List _updateTimer(List timers, UpdateTimerAction action) { return timers .map((timer) => timer.id == action.id ? action.updatedTimer : timer) .toList(growable: false); } List _deleteTimer(List timers, DeleteTimerAction action) { return timers.where((timer) => timer.id != action.id).toList(growable: false); }