Project

General

Profile

Download (1.75 KB) Statistics
| Branch: | Tag: | Revision:
import Immutable from 'seamless-immutable';

import {
BREADCRUMB_BAR_TOGGLE_SWITCHER,
BREADCRUMB_BAR_CLOSE_SWITCHER,
BREADCRUMB_BAR_RESOURCES_REQUEST,
BREADCRUMB_BAR_RESOURCES_SUCCESS,
BREADCRUMB_BAR_RESOURCES_FAILURE,
BREADCRUMB_BAR_CLEAR_SEARCH,
} from './BreadcrumbBarConstants';

const initialState = Immutable({
resourceSwitcherItems: [],
isLoadingResources: false,
isSwitcherOpen: false,
resourceUrl: null,
requestError: null,
currentPage: null,
searchQuery: '',
pages: null,
});

export default (state = initialState, action) => {
const { payload } = action;

switch (action.type) {
case BREADCRUMB_BAR_CLEAR_SEARCH:
return state.set('searchQuery', '');

case BREADCRUMB_BAR_RESOURCES_REQUEST:
return state
.set('resourceSwitcherItems', [])
.set('resourceUrl', payload.resourceUrl)
.set('requestError', null)
.set('isLoadingResources', true)
.set('searchQuery', payload.options.searchQuery);

case BREADCRUMB_BAR_RESOURCES_SUCCESS:
return state
.set('resourceSwitcherItems', payload.items)
.set('resourceUrl', payload.resourceUrl)
.set('currentPage', payload.page)
.set('pages', payload.pages)
.set('requestError', null)
.set('isLoadingResources', false);

case BREADCRUMB_BAR_RESOURCES_FAILURE:
return state
.set('resourceSwitcherItems', [])
.set('requestError', payload.error)
.set('resourceUrl', payload.resourceUrl)
.set('isLoadingResources', false);

case BREADCRUMB_BAR_TOGGLE_SWITCHER:
return state.set('isSwitcherOpen', !state.isSwitcherOpen);

case BREADCRUMB_BAR_CLOSE_SWITCHER:
return state.set('isSwitcherOpen', false);

default:
return state;
}
};
(6-6/7)