You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Lidarr/frontend/src/Utilities/State/selectProviderSchema.js

35 lines
1014 B

import _ from 'lodash';
import getSectionState from 'Utilities/State/getSectionState';
import updateSectionState from 'Utilities/State/updateSectionState';
function applySchemaDefaults(selectedSchema, schemaDefaults) {
if (!schemaDefaults) {
return selectedSchema;
} else if (_.isFunction(schemaDefaults)) {
return schemaDefaults(selectedSchema);
}
return Object.assign(selectedSchema, schemaDefaults);
}
function selectProviderSchema(state, section, payload, schemaDefaults) {
const newState = getSectionState(state, section);
const {
implementation,
presetName
} = payload;
const selectedImplementation = _.find(newState.schema, { implementation });
const selectedSchema = presetName ?
_.find(selectedImplementation.presets, { name: presetName }) :
selectedImplementation;
newState.selectedSchema = applySchemaDefaults(_.cloneDeep(selectedSchema), schemaDefaults);
return updateSectionState(state, section, newState);
}
export default selectProviderSchema;