mirror of
https://github.com/Readarr/Readarr.git
synced 2026-04-25 22:36:59 -04:00
Initial Commit Rework
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
import _ from 'lodash';
|
||||
|
||||
function getProviderState(payload, getState, getFromState) {
|
||||
const id = payload.id;
|
||||
const state = getFromState(getState());
|
||||
const pendingChanges = Object.assign({}, state.pendingChanges);
|
||||
const pendingFields = state.pendingChanges.fields || {};
|
||||
delete pendingChanges.fields;
|
||||
|
||||
const item = id ? _.find(state.items, { id }) : state.selectedSchema || state.schema || {};
|
||||
|
||||
if (item.fields) {
|
||||
pendingChanges.fields = _.reduce(item.fields, (result, field) => {
|
||||
const value = pendingFields.hasOwnProperty(field.name) ?
|
||||
pendingFields[field.name] :
|
||||
field.value;
|
||||
|
||||
result.push({
|
||||
...field,
|
||||
value
|
||||
});
|
||||
|
||||
return result;
|
||||
}, []);
|
||||
}
|
||||
|
||||
return Object.assign({}, item, pendingChanges);
|
||||
}
|
||||
|
||||
export default getProviderState;
|
||||
@@ -0,0 +1,9 @@
|
||||
function getSectionState(state, section) {
|
||||
if (state.hasOwnProperty(section)) {
|
||||
return Object.assign({}, state[section]);
|
||||
}
|
||||
|
||||
return Object.assign({}, state);
|
||||
}
|
||||
|
||||
export default getSectionState;
|
||||
@@ -0,0 +1,34 @@
|
||||
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;
|
||||
@@ -0,0 +1,9 @@
|
||||
function updateSectionState(state, section, newState) {
|
||||
if (state.hasOwnProperty(section)) {
|
||||
return Object.assign({}, state, { [section]: newState });
|
||||
}
|
||||
|
||||
return Object.assign({}, state, newState);
|
||||
}
|
||||
|
||||
export default updateSectionState;
|
||||
Reference in New Issue
Block a user