lml-main
Version:
This is now a mono repository published into many standalone packages.
93 lines • 3.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const FrequenciesActions = require("../../frequencies/actions");
const selectors_1 = require("../../frequencies/selectors");
const data_1 = require("../../frequencies/data");
exports.frequenciesFlasgsInitialState = {
selectedFrequencies: {},
activeFrequencies: {},
selectedFrequencyType: data_1.FREQUENCY_TYPE_MANUAL,
};
exports.frequenciesFlagsReducer = (state = exports.frequenciesFlasgsInitialState, action) => {
switch (action.type) {
case FrequenciesActions.SET_SELECTED_FREQUENCY_TYPE: {
return setSelectedFrequencyType(state, action);
}
case FrequenciesActions.SET_SELECTED_FREQUENCIES: {
return setSelectedFrequencies(state, action);
}
case FrequenciesActions.SET_SELECTED_FREQUENCY_IS_ACTIVE: {
return setSelectedFrequencyIsActive(state, action);
}
case FrequenciesActions.CLEAN_FREQUENCY_FLAGS: {
return cleanFrequencyFlags(state, action);
}
default: {
return state;
}
}
};
const setSelectedFrequencyType = (state, action) => {
const selectedFrequencyType = action.frequencyType;
const showingFrequencies = {};
for (const frequencyId in state.selectedFrequencies) {
if (selectors_1.doesFrequencyMatchType(frequencyId, selectedFrequencyType)) {
showingFrequencies[frequencyId] = true;
}
}
return Object.assign({}, state, { selectedFrequencyType });
};
const setSelectedFrequencies = (state, action) => {
const selectedFrequencies = Object.assign({}, action.frequencies);
const activeFrequencies = Object.assign({}, state.activeFrequencies);
for (const frequencyId in selectedFrequencies) {
//If id does not exist in state.selectedFrequencies add it to activeFrequencies
if (!state.selectedFrequencies.hasOwnProperty(frequencyId)) {
activeFrequencies[frequencyId] = true;
}
}
for (const frequencyId in state.selectedFrequencies) {
//if id does not exist in new activeFrequencies remove it from all other collections
if (!selectedFrequencies.hasOwnProperty(frequencyId)) {
delete activeFrequencies[frequencyId];
}
}
return Object.assign({}, state, { selectedFrequencies, activeFrequencies });
};
const setSelectedFrequencyIsActive = (state, action) => {
if (state.selectedFrequencies.hasOwnProperty(action.frequency)) {
let activeFrequencies;
if (!action.active) {
// shallow coppy the selected frequencies and then delete the key from the copy
activeFrequencies = Object.assign({}, state.activeFrequencies);
if (action.frequency)
delete activeFrequencies[action.frequency];
if (action.counterpart)
delete activeFrequencies[action.counterpart];
}
else {
activeFrequencies = Object.assign({}, state.activeFrequencies, { [action.frequency]: true });
if (action.counterpart) {
activeFrequencies = Object.assign({}, activeFrequencies, { [action.counterpart]: true });
}
}
return Object.assign({}, state, { activeFrequencies });
}
return state;
};
const cleanFrequencyFlags = (state, action) => {
const selectedFrequencies = Object.assign({}, state.selectedFrequencies);
const activeFrequencies = Object.assign({}, state.activeFrequencies);
for (const id in selectedFrequencies) {
if (!action.frequencies[id]) {
delete selectedFrequencies[id];
}
}
for (const id in activeFrequencies) {
if (!action.frequencies[id]) {
delete activeFrequencies[id];
}
}
return Object.assign({}, state, { selectedFrequencies, activeFrequencies });
};
//# sourceMappingURL=flags.js.map