UNPKG

lml-main

Version:

This is now a mono repository published into many standalone packages.

93 lines 3.93 kB
"use strict"; 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