mirror of
https://github.com/strapi/strapi.git
synced 2025-08-26 01:35:56 +00:00

As discussed with @Aurelsicoko this feature is not needed when adding or editing a connection
158 lines
5.6 KiB
JavaScript
Executable File
158 lines
5.6 KiB
JavaScript
Executable File
/*
|
|
*
|
|
* HomePage reducer
|
|
*
|
|
*/
|
|
|
|
import { fromJS, Map, OrderedMap } from 'immutable';
|
|
import { remove, sortBy } from 'lodash';
|
|
import {
|
|
CONFIG_FETCH_SUCCEEDED,
|
|
CHANGE_DEFAULT_LANGUAGE,
|
|
CHANGE_INPUT,
|
|
CANCEL_CHANGES,
|
|
CLOSE_MODAL,
|
|
LANGUAGES_FETCH_SUCCEEDED,
|
|
EDIT_SETTINGS_SUCCEEDED,
|
|
LANGUAGE_ACTION_SUCCEEDED,
|
|
DATABASES_FETCH_SUCCEEDED,
|
|
DATABASE_ACTION_SUCCEEDED,
|
|
LANGUAGE_DELETE,
|
|
SPECIFIC_DATABASE_FETCH_SUCCEEDED,
|
|
LANGUAGE_ACTION_ERROR,
|
|
DATABASE_DELETE,
|
|
DATABASE_ACTION_ERROR,
|
|
NEW_LANGUAGE_POST,
|
|
EMPTY_DB_MODIFIED_DATA,
|
|
SET_ERRORS,
|
|
SET_LOADER,
|
|
UNSET_LOADER,
|
|
} from './constants';
|
|
|
|
/* eslint-disable new-cap */
|
|
const initialState = fromJS({
|
|
loading: true,
|
|
cancelAction: false,
|
|
configsDisplay: OrderedMap({}),
|
|
initialData: Map({}),
|
|
modifiedData: Map({}),
|
|
listLanguages: Map({}),
|
|
addDatabaseSection: Map({}),
|
|
didCreatedNewLanguage: false,
|
|
didCreatedNewDb: false,
|
|
specificDatabase: OrderedMap({}),
|
|
dbNameTarget: '',
|
|
selectOptions: Map({}),
|
|
formValidations: [],
|
|
formErrors: [],
|
|
error: false,
|
|
showLoader: false,
|
|
});
|
|
/* eslint-disable no-case-declarations */
|
|
|
|
function homePageReducer(state = initialState, action) {
|
|
switch (action.type) {
|
|
case CONFIG_FETCH_SUCCEEDED:
|
|
return state
|
|
.set('loading', false)
|
|
.set('configsDisplay', OrderedMap(action.configs))
|
|
.set('initialData', Map(action.data))
|
|
.set('modifiedData', Map(action.data))
|
|
.set('formErrors', [])
|
|
.set('formValidations', action.formValidations);
|
|
case CHANGE_INPUT:
|
|
return state
|
|
.updateIn(['modifiedData', action.key], () => action.value);
|
|
case CLOSE_MODAL:
|
|
return state.set('error', !state.get('error'));
|
|
case CANCEL_CHANGES:
|
|
return state
|
|
.set('modifiedData', state.get('initialData'))
|
|
.set('formErrors', [])
|
|
.set('cancelAction', !state.get('cancelAction'));
|
|
case DATABASES_FETCH_SUCCEEDED:
|
|
return state
|
|
.set('configsDisplay', OrderedMap(action.configsDisplay))
|
|
.set('didCreatedNewDb', false)
|
|
.set('addDatabaseSection', OrderedMap(action.appDatabases))
|
|
.set('specificDatabase', OrderedMap())
|
|
.set('loading', false)
|
|
.set('initialData', Map())
|
|
.set('dbNameTarget', action.dbNameTarget)
|
|
.set('formValidations', action.formValidations)
|
|
.set('formErrors', [])
|
|
.set('modifiedData', Map(action.modifiedData));
|
|
case LANGUAGE_DELETE:
|
|
return state
|
|
.updateIn(['configsDisplay', 'sections'], list => remove(list, (language) => language.name !== action.languageToDelete));
|
|
case DATABASE_DELETE:
|
|
return state
|
|
.updateIn(['configsDisplay', 'sections'], list => remove(list, (database) => database.name !== action.databaseToDelete));
|
|
case LANGUAGES_FETCH_SUCCEEDED:
|
|
return state
|
|
.set('loading', false)
|
|
.set('didCreatedNewLanguage', false)
|
|
.set('configsDisplay', OrderedMap(action.configs))
|
|
.set('initialData', Map(action.selectedLanguage))
|
|
.set('modifiedData', Map(action.selectedLanguage))
|
|
.set('selectOptions', Map(action.selectOptions))
|
|
.set('formErrors', [])
|
|
.set('listLanguages', Map(action.listLanguages));
|
|
case EDIT_SETTINGS_SUCCEEDED:
|
|
return state
|
|
.set('initialData', state.get('modifiedData'))
|
|
.set('error', !state.get('error'))
|
|
.set('formErrors', []);
|
|
case CHANGE_DEFAULT_LANGUAGE:
|
|
return state
|
|
.set('configsDisplay', OrderedMap(action.configsDisplay))
|
|
.updateIn(['modifiedData', 'language.defaultLocale'], () => action.newLanguage);
|
|
case LANGUAGE_ACTION_SUCCEEDED:
|
|
return state.set('error', !state.get('error')).set('modifiedData', state.get('initialData'));
|
|
case LANGUAGE_ACTION_ERROR:
|
|
return state.set('didCreatedNewLanguage', true).set('error', !state.get('error'));
|
|
case DATABASE_ACTION_SUCCEEDED:
|
|
const newDefaultDbConnection = state.getIn(['modifiedData', 'database.defaultConnection']);
|
|
return state
|
|
.set('modifiedData', Map())
|
|
.setIn(['modifiedData', 'database.defaultConnection'], newDefaultDbConnection)
|
|
.set('formErrors', [])
|
|
.set('error', !state.get('error'))
|
|
.set('didCreatedNewDb', true);
|
|
case DATABASE_ACTION_ERROR:
|
|
return state
|
|
.set('error', !state.get('error'))
|
|
.set('formErrors', action.formErrors);
|
|
case SPECIFIC_DATABASE_FETCH_SUCCEEDED:
|
|
return state
|
|
.set('specificDatabase', OrderedMap(action.database))
|
|
.set('dbNameTarget', action.dbNameTarget)
|
|
.set('initialData', Map(action.data))
|
|
.set('formValidations', action.formValidations)
|
|
.set('modifiedData', Map(action.data));
|
|
case EMPTY_DB_MODIFIED_DATA:
|
|
const defaultDbConnection = state.getIn(['modifiedData', 'database.defaultConnection']);
|
|
return state
|
|
.set('modifiedData', Map())
|
|
.set('dbNameTarget', 'database.connections.${name}.name') // eslint-disable-line no-template-curly-in-string
|
|
.set('formErrors', [])
|
|
.setIn(['modifiedData', 'database.defaultConnection'], defaultDbConnection);
|
|
case NEW_LANGUAGE_POST:
|
|
const sections = state.getIn(['configsDisplay', 'sections']);
|
|
sections.push({ active: false, name: state.getIn(['modifiedData', 'language.defaultLocale']) });
|
|
const newSections = sortBy(sections, (o) => o.name);
|
|
return state.setIn(['configsDisplay', 'sections'], newSections);
|
|
case SET_ERRORS:
|
|
return state
|
|
.set('formErrors', action.errors);
|
|
case SET_LOADER:
|
|
return state.set('showLoader', true);
|
|
case UNSET_LOADER:
|
|
return state.set('showLoader', false);
|
|
default:
|
|
return state;
|
|
}
|
|
}
|
|
|
|
export default homePageReducer;
|