Feature/Basic App (#1) Basic App Structure Consists of Time Progress Dashboard, Time Progress Detail View and Time Progress Creator. All of these have an AppDrawer with a Link To the Dashboard and all your Track Time Progresses, also an About Button. Commits: * Undetailed Commit more work * Changed isEditing ? in Detail Screen and Extracted FAB row to widget * Extracted Progress Detail Fab Row and Progress Detail select Date Btn to widgets * Create Progress Detail Widgets Folder * Extracted Edit Dates Row Widget * Extracted Functions from ui * Made some fields private * LoadTimerProgressList if unloaded function * Created App Yes No Dialog Widget * Using Yes No Dialog in Detail Screen * Created TimeProgress Initial Default factory * Renamed to Time Progress Tracker * Added About Button in App Drawer * Code cleanup * Code clean up and fixed Bug with null as string in Repository Signed-off-by Andreas Fahrecker <AndreasFahrecker@gmail.com>
50 lines
2.0 KiB
Dart
50 lines
2.0 KiB
Dart
import 'package:redux/redux.dart';
|
|
import 'package:time_progress_tracker/actions/actions.dart';
|
|
import 'package:time_progress_tracker/models/app_state.dart';
|
|
import 'package:time_progress_tracker/models/time_progress.dart';
|
|
import 'package:time_progress_tracker/persistence/time_progress_entity.dart';
|
|
import 'package:time_progress_tracker/persistence/time_progress_repository.dart';
|
|
import 'package:time_progress_tracker/selectors/time_progress_selectors.dart';
|
|
|
|
List<Middleware<AppState>> createStoreTimeProgressListMiddleware(
|
|
TimeProgressRepository repository) {
|
|
final saveTimeProgressList = _createSaveTimeProgressList(repository);
|
|
final loadTimeProgressList = _createLoadTimeProgressList(repository);
|
|
|
|
return [
|
|
TypedMiddleware<AppState, LoadTimeProgressListAction>(loadTimeProgressList),
|
|
TypedMiddleware<AppState, AddTimeProgressAction>(saveTimeProgressList),
|
|
TypedMiddleware<AppState, UpdateTimeProgressAction>(saveTimeProgressList),
|
|
TypedMiddleware<AppState, DeleteTimeProgressAction>(saveTimeProgressList),
|
|
];
|
|
}
|
|
|
|
Middleware<AppState> _createSaveTimeProgressList(
|
|
TimeProgressRepository repository) {
|
|
return (Store<AppState> store, dynamic action, NextDispatcher next) {
|
|
next(action);
|
|
|
|
repository.saveTimeProgressList(
|
|
timeProgressListSelector(store.state)
|
|
.map<TimeProgressEntity>((timeProgress) => timeProgress.toEntity())
|
|
.toList(growable: false),
|
|
);
|
|
};
|
|
}
|
|
|
|
Middleware<AppState> _createLoadTimeProgressList(
|
|
TimeProgressRepository repository) {
|
|
return (Store<AppState> store, dynamic action, NextDispatcher next) {
|
|
repository.loadTimeProgressList().then((timeProgresses) {
|
|
List<TimeProgress> timeProgressList =
|
|
timeProgresses.map<TimeProgress>(TimeProgress.fromEntity).toList();
|
|
if (timeProgressList == null) {
|
|
timeProgressList = [];
|
|
}
|
|
store.dispatch(TimeProgressListLoadedAction(
|
|
timeProgressList,
|
|
));
|
|
}).catchError((_) => store.dispatch(TimeProgressListNotLoadedAction()));
|
|
};
|
|
}
|