invoice/lib/redux/settings/settings_reducer.dart

121 lines
4.8 KiB
Dart

import 'package:invoiceninja_flutter/data/models/entities.dart';
import 'package:invoiceninja_flutter/redux/client/client_actions.dart';
import 'package:invoiceninja_flutter/redux/company/company_actions.dart';
import 'package:invoiceninja_flutter/redux/company/company_state.dart';
import 'package:invoiceninja_flutter/redux/group/group_actions.dart';
import 'package:invoiceninja_flutter/redux/settings/settings_actions.dart';
import 'package:redux/redux.dart';
Reducer<SettingsUIState> settingsUIReducer = combineReducers([
TypedReducer<SettingsUIState, ViewSettings>((state, action) {
return state.rebuild((b) => b
..company.replace(action.company ?? state.company)
..origCompany.replace(action.company ?? state.origCompany)
..group.replace(action.group ?? state.group)
..origGroup.replace(action.group ?? state.origGroup)
..client.replace(action.client ?? state.client)
..origClient.replace(action.client ?? state.origClient)
..user.replace(action.user ?? state.user)
..origUser.replace(action.user ?? state.origUser)
..updatedAt = DateTime.now().millisecondsSinceEpoch
..section = action.section ?? state.section
..tabIndex = action.clearFilter ? 0 : action.tabIndex ?? state.tabIndex
..isChanged = false
..filter = action.clearFilter ? null : state.filter
..filterClearedAt = action.clearFilter
? DateTime.now().millisecondsSinceEpoch
: state.filterClearedAt
..entityType = action.client != null
? EntityType.client
: action.group != null
? EntityType.group
: state.entityType);
}),
TypedReducer<SettingsUIState, UpdateCompany>((state, action) {
return state.rebuild((b) => b
..company.replace(action.company)
..isChanged = true);
}),
TypedReducer<SettingsUIState, UpdateSettings>((state, action) {
switch (state.entityType) {
case EntityType.client:
return state.rebuild((b) => b
..client.settings.replace(action.settings)
..isChanged = true);
case EntityType.group:
return state.rebuild((b) => b
..group.settings.replace(action.settings)
..isChanged = true);
default:
return state.rebuild((b) => b
..company.settings.replace(action.settings)
..isChanged = true);
}
}),
TypedReducer<SettingsUIState, UpdateUserSettings>((state, action) {
return state.rebuild((b) => b
..user.replace(action.user)
..isChanged = true);
}),
TypedReducer<SettingsUIState, ResetSettings>((state, action) {
return state.rebuild((b) => b
..company.replace(state.origCompany)
..group.replace(state.origGroup)
..client.replace(state.origClient)
..user.replace(state.origUser)
..isChanged = false
..updatedAt = DateTime.now().millisecondsSinceEpoch);
}),
TypedReducer<SettingsUIState, SaveCompanySuccess>((state, action) {
return state.rebuild((b) => b
..company.replace(action.company)
..origCompany.replace(action.company)
..updatedAt = DateTime.now().millisecondsSinceEpoch
..isChanged = false);
}),
TypedReducer<SettingsUIState, SaveGroupSuccess>((state, action) {
return state.rebuild((b) => b
..group.replace(action.group)
..origGroup.replace(action.group)
..updatedAt = DateTime.now().millisecondsSinceEpoch
..isChanged = false);
}),
TypedReducer<SettingsUIState, SaveClientSuccess>((state, action) {
return state.rebuild((b) => b
..client.replace(action.client)
..origClient.replace(action.client)
..updatedAt = DateTime.now().millisecondsSinceEpoch
..isChanged = false);
}),
TypedReducer<SettingsUIState, SaveAuthUserSuccess>((state, action) {
return state.rebuild((b) => b
..user.replace(action.user)
..origUser.replace(action.user)
..isChanged = false);
}),
TypedReducer<SettingsUIState, FilterSettings>((state, action) {
return state.rebuild((b) => b
..filter = action.filter
..filterClearedAt = action.filter == null
? DateTime.now().millisecondsSinceEpoch
: state.filterClearedAt);
}),
TypedReducer<SettingsUIState, ClearSettingsFilter>((state, action) {
return state.rebuild((b) => b
..updatedAt = DateTime.now().millisecondsSinceEpoch
..company.replace(state.origCompany)
..entityType = EntityType.company
..isChanged = false);
}),
TypedReducer<SettingsUIState, UpdateSettingsTab>((state, action) {
return state.rebuild((b) => b..tabIndex = action.tabIndex);
}),
TypedReducer<SettingsUIState, UpdateSettingsTemplate>((state, action) {
return state.rebuild((b) => b..selectedTemplate = action.selectedTemplate);
}),
TypedReducer<SettingsUIState, UpdatedSetting>((state, action) {
return state
.rebuild((b) => b..updatedAt = DateTime.now().millisecondsSinceEpoch);
}),
]);