public/reducers/rootReducer.js (329 lines of code) (raw):

import {TAG_GET_REQUEST, TAG_GET_RECEIVE, TAG_GET_ERROR} from '../actions/TagActions/getTag'; import {TAG_UPDATE} from '../actions/TagActions/updateTag'; import {TAG_CREATE_ERROR, TAG_CREATE_RECEIVE} from '../actions/TagActions/createTag'; import {TAG_SAVE_REQUEST, TAG_SAVE_RECEIVE, TAG_SAVE_ERROR} from '../actions/TagActions/saveTag'; import {TAG_DELETE_REQUEST, TAG_DELETE_RECEIVE, TAG_DELETE_ERROR} from '../actions/TagActions/deleteTag'; import {SECTIONS_GET_REQUEST, SECTIONS_GET_RECEIVE, SECTIONS_GET_ERROR} from '../actions/SectionsActions/getSections'; import {SECTION_GET_REQUEST, SECTION_GET_RECEIVE, SECTION_GET_ERROR} from '../actions/SectionsActions/getSection'; import {SECTION_UPDATE} from '../actions/SectionsActions/updateSection'; import {SECTION_SAVE_REQUEST, SECTION_SAVE_RECEIVE, SECTION_SAVE_ERROR} from '../actions/SectionsActions/saveSection'; import {SPONSORSHIP_GET_REQUEST, SPONSORSHIP_GET_RECEIVE, SPONSORSHIP_GET_ERROR} from '../actions/SponsorshipActions/getSponsorship'; import {SPONSORSHIP_SAVE_REQUEST, SPONSORSHIP_SAVE_RECEIVE, SPONSORSHIP_SAVE_ERROR} from '../actions/SponsorshipActions/saveSponsorship'; import {CLASHING_SPONSORSHIPS_GET_REQUEST, CLASHING_SPONSORSHIPS_GET_RECEIVE, CLASHING_SPONSORSHIPS_GET_ERROR} from '../actions/SponsorshipActions/getClashingSponsorships'; import {SPONSORSHIP_UPDATE} from '../actions/SponsorshipActions/updateSponsorship'; import {REFERENCE_TYPES_GET_REQUEST, REFERENCE_TYPES_GET_RECEIVE, REFERENCE_TYPES_GET_ERROR} from '../actions/ReferenceTypeActions/getReferenceTypes'; import {TAG_POPULATE_BLANK} from '../actions/TagActions/createTag'; import {SECTION_POPULATE_BLANK} from '../actions/SectionsActions/createSection'; import {SPONSORSHIP_POPULATE_BLANK} from '../actions/SponsorshipActions/createSponsorship'; import {CAPI_CLEAR_PAGES, CAPI_SWITCH_PAGE, CAPI_SEARCH_RECEIVE, CAPI_SEARCH_REQUEST, CAPI_FILTERS_UPDATE} from '../actions/CapiActions/searchCapi'; import {PILLARS_GET_REQUEST, PILLARS_GET_RECEIVE, PILLARS_GET_ERROR} from '../actions/PillarsActions/getPillars'; import {PILLAR_GET_REQUEST, PILLAR_GET_RECEIVE, PILLAR_GET_ERROR} from '../actions/PillarsActions/getPillar'; import {PILLAR_UPDATE} from '../actions/PillarsActions/updatePillar'; import {PILLAR_SAVE_REQUEST, PILLAR_SAVE_RECEIVE, PILLAR_SAVE_ERROR} from '../actions/PillarsActions/savePillar'; import {PILLAR_POPULATE_BLANK} from '../actions/PillarsActions/createPillar'; import {PILLAR_DELETE_REQUEST, PILLAR_DELETE_RECEIVE, PILLAR_DELETE_ERROR} from '../actions/PillarsActions/deletePillar'; import {CLEAR_ERROR} from '../actions/UIActions/clearError'; import {SHOW_ERROR} from '../actions/UIActions/showError'; export const saveState = { dirty: 'SAVE_STATE_DIRTY', clean: 'SAVE_STATE_CLEAN', inprogress: 'SAVE_STATE_INPROGRESS', error: 'SAVE_STATE_ERROR' }; export default function tag(state = { tag: false, error: false, saveState: undefined, config: {}, capiSearch: {} }, action) { switch (action.type) { // CONFIG case 'CONFIG_RECEIVED': return Object.assign({}, state, { config: action.config }); // UI case CLEAR_ERROR: return Object.assign({}, state, { error: false }); case SHOW_ERROR: return Object.assign({}, state, { error: action.message }); // TAG GET case TAG_GET_REQUEST: return Object.assign({}, state, { tag: false, saveState: undefined }); case TAG_GET_RECEIVE: return Object.assign({}, state, { tag: action.tag, tagEditable: action.tagEditable, saveState: saveState.clean }); case TAG_GET_ERROR: return Object.assign({}, state, { error: action.message, saveState: undefined }); // TAG UPDATE case TAG_UPDATE: return Object.assign({}, state, { tag: action.tag, saveState: saveState.dirty }); case TAG_POPULATE_BLANK: return Object.assign({}, state, { tag: action.tag, tagEditable: action.tagEditable, saveState: saveState.clean }); // TAG CREATE case TAG_CREATE_ERROR: return Object.assign({}, state, { error: action.message, saveState: undefined }); case TAG_CREATE_RECEIVE: return Object.assign({}, state, { sections: action.refreshSections ? undefined : state.sections }); // TAG SAVE case TAG_SAVE_REQUEST: return Object.assign({}, state, { saveState: saveState.inprogress }); case TAG_SAVE_RECEIVE: return Object.assign({}, state, { tag: action.tag, saveState: saveState.clean }); case TAG_SAVE_ERROR: return Object.assign({}, state, { error: action.message }); // TAG DELETE case TAG_DELETE_REQUEST: return Object.assign({}, state, { saveState: saveState.clean }); case TAG_DELETE_RECEIVE: return Object.assign({}, state, { saveState: saveState.clean, error: action.message }); case TAG_DELETE_ERROR: return Object.assign({}, state, { error: action.message }); // SECTIONS GET case SECTIONS_GET_REQUEST: return Object.assign({}, state, { sections: false }); case SECTIONS_GET_RECEIVE: return Object.assign({}, state, { sections: action.sections }); case SECTIONS_GET_ERROR: return Object.assign({}, state, { error: action.message }); // SECTION GET case SECTION_GET_REQUEST: return Object.assign({}, state, { section: false, saveState: undefined }); case SECTION_GET_RECEIVE: return Object.assign({}, state, { section: action.section, saveState: saveState.clean }); case SECTION_GET_ERROR: return Object.assign({}, state, { error: action.message, saveState: undefined }); // SECTION UPDATE case SECTION_UPDATE: return Object.assign({}, state, { section: action.section, saveState: saveState.dirty }); case SECTION_POPULATE_BLANK: return Object.assign({}, state, { section: action.section, saveState: saveState.clean }); // SECTION SAVE case SECTION_SAVE_REQUEST: return Object.assign({}, state, { saveState: saveState.inprogress }); case SECTION_SAVE_RECEIVE: return Object.assign({}, state, { section: action.section, saveState: saveState.clean }); case SECTION_SAVE_ERROR: return Object.assign({}, state, { error: action.message }); // PILLARS GET case PILLARS_GET_REQUEST: return Object.assign({}, state, { pillars: false }); case PILLARS_GET_RECEIVE: return Object.assign({}, state, { pillars: action.pillars }); case PILLARS_GET_ERROR: return Object.assign({}, state, { error: action.message }); // PILLAR GET case PILLAR_GET_REQUEST: return Object.assign({}, state, { pillar: false, saveState: undefined }); case PILLAR_GET_RECEIVE: return Object.assign({}, state, { pillar: action.pillar, saveState: saveState.clean }); case PILLAR_GET_ERROR: return Object.assign({}, state, { error: action.message, saveState: undefined }); // PILLAR SAVE case PILLAR_SAVE_REQUEST: return Object.assign({}, state, { saveState: saveState.inprogress }); case PILLAR_SAVE_RECEIVE: return Object.assign({}, state, { pillar: action.pillar, saveState: saveState.clean }); case PILLAR_SAVE_ERROR: return Object.assign({}, state, { error: action.message }); // PILLAR UPDATE case PILLAR_UPDATE: return Object.assign({}, state, { pillar: action.pillar, saveState: saveState.dirty }); case PILLAR_POPULATE_BLANK: return Object.assign({}, state, { pillar: action.pillar, saveState: saveState.clean }); // PILLAR DELETE case PILLAR_DELETE_REQUEST: return Object.assign({}, state, { saveState: saveState.clean }); case PILLAR_DELETE_RECEIVE: return Object.assign({}, state, { saveState: saveState.clean, error: action.message }); case PILLAR_DELETE_ERROR: return Object.assign({}, state, { error: action.message }); // SPONSORSHIP GET case SPONSORSHIP_GET_REQUEST: return Object.assign({}, state, { sponsorship: false, saveState: undefined }); case SPONSORSHIP_GET_RECEIVE: return Object.assign({}, state, { sponsorship: action.sponsorship, saveState: saveState.clean }); case SPONSORSHIP_GET_ERROR: return Object.assign({}, state, { error: action.message, saveState: undefined }); // SPONSORSHIP UPDATE case SPONSORSHIP_UPDATE: return Object.assign({}, state, { sponsorship: action.sponsorship, saveState: saveState.dirty }); case SPONSORSHIP_POPULATE_BLANK: return Object.assign({}, state, { sponsorship: action.sponsorship, saveState: saveState.clean }); // SPONSORSHIP SAVE case SPONSORSHIP_SAVE_REQUEST: return Object.assign({}, state, { saveState: saveState.inprogress }); case SPONSORSHIP_SAVE_RECEIVE: return Object.assign({}, state, { sponsorship: action.sponsorship, saveState: saveState.clean }); case SPONSORSHIP_SAVE_ERROR: return Object.assign({}, state, { error: action.message }); // CLASHING SPONSORSHIPS GET case CLASHING_SPONSORSHIPS_GET_RECEIVE: return Object.assign({}, state, { clashingSponsorships: action.clashingSponsorships }); case CLASHING_SPONSORSHIPS_GET_ERROR: return Object.assign({}, state, { error: action.message }); // REFERENCE TYPES GET case REFERENCE_TYPES_GET_REQUEST: return Object.assign({}, state, { referenceTypes: false }); case REFERENCE_TYPES_GET_RECEIVE: return Object.assign({}, state, { referenceTypes: action.referenceTypes }); case REFERENCE_TYPES_GET_ERROR: return Object.assign({}, state, { error: action.message }); //CAPI SEARCH case CAPI_CLEAR_PAGES: return Object.assign({}, state, { capiSearch: Object.assign({}, state.capiSearch, { pages: {}, count: 0, pageRequestCount: 0 }) }); case CAPI_SWITCH_PAGE: return Object.assign({}, state, { capiSearch: Object.assign({}, state.capiSearch, { currentPage: action.page }) }); case CAPI_SEARCH_REQUEST: return Object.assign({}, state, { capiSearch: Object.assign({}, state.capiSearch, { searchTerm: action.searchTerm, byline: action.byline, pageRequestCount: state.capiSearch.pageRequestCount + 1 }) }); case CAPI_SEARCH_RECEIVE: var newState = Object.assign({}, state, { capiSearch: Object.assign({}, state.capiSearch, { pages: Object.assign({}, state.capiSearch.pages), count: action.resultsCount, currentPage: action.page }), }); var newPage = action.results; newState.capiSearch.pages[action.page] = newPage; newState.capiSearch.pageRequestCount -= 1; return newState; case CAPI_FILTERS_UPDATE: return Object.assign({}, state, { capiSearch: Object.assign({}, state.capiSearch, { filters: action.filters }) }); default: return state; } }