Feature/change progress colors (#6)
* Added Settings Actions * Created App Settings and Repo + Entity * Code cleanup Time Progress * Created App Settings Middleware * Has Progresses ad has Settings loaded * Created Load and Update Settings reducers * Added Settings store middleware to renamed store middleware * Load Default Settings if not Saved. Use Redux AppState to showprogress colors. Colors are not yet changeable. * Added ColorPicker for Done and Left Color Fixed Loading App Settings Bug * Fixed Version Number * Fixed Android App Logo * Extracted Color Settings into Widget * Fixed Home Settings Tab Layout and Color Settings Button now show Text in complementary color
This commit is contained in:
committed by
GitHub
parent
c580e45361
commit
b520d56d1a
70
lib/middleware/store_middleware.dart
Normal file
70
lib/middleware/store_middleware.dart
Normal file
@ -0,0 +1,70 @@
|
||||
import 'package:redux/redux.dart';
|
||||
import 'package:time_progress_tracker/actions/actions.dart';
|
||||
import 'package:time_progress_tracker/models/app_settings.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/app_settings.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>> createStoreMiddleware(
|
||||
TimeProgressRepository progressRepo, AppSettingsRepository settingsRepo) {
|
||||
final saveTimeProgressList = _createSaveTimeProgressList(progressRepo);
|
||||
final loadTimeProgressList = _createLoadTimeProgressList(progressRepo);
|
||||
|
||||
final saveSettings = _createSaveAppSettings(settingsRepo);
|
||||
final loadSettings = _createLoadAppSettings(settingsRepo);
|
||||
|
||||
return [
|
||||
TypedMiddleware<AppState, LoadTimeProgressListAction>(loadTimeProgressList),
|
||||
TypedMiddleware<AppState, AddTimeProgressAction>(saveTimeProgressList),
|
||||
TypedMiddleware<AppState, UpdateTimeProgressAction>(saveTimeProgressList),
|
||||
TypedMiddleware<AppState, DeleteTimeProgressAction>(saveTimeProgressList),
|
||||
TypedMiddleware<AppState, LoadSettingsAction>(loadSettings),
|
||||
TypedMiddleware<AppState, UpdateAppSettingsActions>(saveSettings)
|
||||
];
|
||||
}
|
||||
|
||||
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()));
|
||||
};
|
||||
}
|
||||
|
||||
Middleware<AppState> _createSaveAppSettings(AppSettingsRepository repo) =>
|
||||
(Store<AppState> store, dynamic action, NextDispatcher next) {
|
||||
next(action);
|
||||
repo.saveAppSettings(store.state.appSettings.toEntity());
|
||||
};
|
||||
|
||||
Middleware<AppState> _createLoadAppSettings(AppSettingsRepository repo) =>
|
||||
(Store<AppState> store, dynamic action, NextDispatcher next) {
|
||||
repo.loadAppSettings().then((appSettings) {
|
||||
store.dispatch(
|
||||
AppSettingsLoadedActions(AppSettings.fromEntity(appSettings)));
|
||||
});
|
||||
};
|
Reference in New Issue
Block a user