brandReducer.js 7.05 KB
'use strict';

import InitialState from './brandInitialState';
import Immutable, {Map} from 'immutable';

const {
	SET_TYPE,

	SET_BRAND_FILTER,
	SET_CHANNEL_FILTER,

	GET_BRAND_LIST_FOR_BOY_REQUEST,
	GET_BRAND_LIST_FOR_BOY_SUCCESS,
	GET_BRAND_LIST_FOR_BOY_FAILURE,

	GET_BRAND_LIST_FOR_GIRL_REQUEST,
	GET_BRAND_LIST_FOR_GIRL_SUCCESS,
	GET_BRAND_LIST_FOR_GIRL_FAILURE,

	GET_BRAND_LIST_FOR_KID_REQUEST,
	GET_BRAND_LIST_FOR_KID_SUCCESS,
	GET_BRAND_LIST_FOR_KID_FAILURE,

	GET_BRAND_LIST_FOR_LIFESTYLE_REQUEST,
	GET_BRAND_LIST_FOR_LIFESTYLE_SUCCESS,
	GET_BRAND_LIST_FOR_LIFESTYLE_FAILURE,

	GET_BRAND_RESOURCE_FOR_BOY_REQUEST,
	GET_BRAND_RESOURCE_FOR_BOY_SUCCESS,
	GET_BRAND_RESOURCE_FOR_BOY_FAILURE,

	GET_BRAND_RESOURCE_FOR_GIRL_REQUEST,
	GET_BRAND_RESOURCE_FOR_GIRL_SUCCESS,
	GET_BRAND_RESOURCE_FOR_GIRL_FAILURE,

	GET_BRAND_RESOURCE_FOR_KID_REQUEST,
	GET_BRAND_RESOURCE_FOR_KID_SUCCESS,
	GET_BRAND_RESOURCE_FOR_KID_FAILURE,

	GET_BRAND_RESOURCE_FOR_LIFESTYLE_REQUEST,
	GET_BRAND_RESOURCE_FOR_LIFESTYLE_SUCCESS,
	GET_BRAND_RESOURCE_FOR_LIFESTYLE_FAILURE,

	BRAND_SHOW_SEARCH,
	FETCH_BRAND_SEARCH_HISTORY,
    INSERT_BRAND_SEARCH_HISTORY,
    CLEAR_BRAND_SEARCH_HISTORY,
    BRAND_HOT_KEYWORD_REQUEST,
    BRAND_HOT_KEYWORD_SUCCESS,
    BRAND_HOT_KEYWORD_FAILURE,

} = require('../../constants/actionTypes').default;

const initialState = new InitialState;

export default function brandReducer(state=initialState, action) {
    switch(action.type) {
 
		case SET_BRAND_FILTER: {
			return state.set('brandFliter', action.payload);
		}

		case SET_CHANNEL_FILTER: {
			return state.set('channelFliter', action.payload);
		}

		case BRAND_SHOW_SEARCH: {
			return state.set('showSearch', action.payload);
		}

		case GET_BRAND_LIST_FOR_BOY_REQUEST:
		{
			return state;
		}
		case GET_BRAND_LIST_FOR_BOY_SUCCESS:
		{
			let {
				all_list,
				hot_list,
				new_list,
			} = action.payload;

			return state.setIn(['brandListForBoy', 'all_list'], Immutable.fromJS(all_list))
			.setIn(['brandListForBoy', 'hot_list'], Immutable.fromJS(hot_list))
			.setIn(['brandListForBoy', 'new_list'], Immutable.fromJS(new_list))
			.setIn(['brandListForBoy', 'hasSuccess'], true);

		}
		case GET_BRAND_LIST_FOR_BOY_FAILURE:
		{
			return state.setIn(['brandListForBoy', 'hasSuccess'], false);
		}
		case GET_BRAND_LIST_FOR_GIRL_REQUEST:
		{
			return state;
		}
		case GET_BRAND_LIST_FOR_GIRL_SUCCESS:
		{
			let {
				all_list,
				hot_list,
				new_list,
			} = action.payload;

			return state.setIn(['brandListForGirl', 'all_list'], Immutable.fromJS(all_list))
			.setIn(['brandListForGirl', 'hot_list'], Immutable.fromJS(hot_list))
			.setIn(['brandListForGirl', 'new_list'], Immutable.fromJS(new_list))
			.setIn(['brandListForGirl', 'hasSuccess'], true);
		}
		case GET_BRAND_LIST_FOR_GIRL_FAILURE:
		{
			return state.setIn(['brandListForGirl', 'hasSuccess'], false);
		}
		case GET_BRAND_LIST_FOR_KID_REQUEST:
		{
			return state;
		}
		case GET_BRAND_LIST_FOR_KID_SUCCESS:
		{
			let {
				all_list,
				hot_list,
				new_list,
			} = action.payload;

			return state.setIn(['brandListForKid', 'all_list'], Immutable.fromJS(all_list))
			.setIn(['brandListForKid', 'hot_list'], Immutable.fromJS(hot_list))
			.setIn(['brandListForKid', 'new_list'], Immutable.fromJS(new_list))
			.setIn(['brandListForKid', 'hasSuccess'], true);
		}
		case GET_BRAND_LIST_FOR_KID_FAILURE:
		{
			return state.setIn(['brandListForKid', 'hasSuccess'], false);
		}
		case GET_BRAND_LIST_FOR_LIFESTYLE_REQUEST:
		{
			return state;
		}
		case GET_BRAND_LIST_FOR_LIFESTYLE_SUCCESS:
		{
			let {
				all_list,
				hot_list,
				new_list,
			} = action.payload;

			return state.setIn(['brandListForLifeStyle', 'all_list'], Immutable.fromJS(all_list))
			.setIn(['brandListForLifeStyle', 'hot_list'], Immutable.fromJS(hot_list))
			.setIn(['brandListForLifeStyle', 'new_list'], Immutable.fromJS(new_list))
			.setIn(['brandListForLifeStyle', 'hasSuccess'], true);
		}
		case GET_BRAND_LIST_FOR_LIFESTYLE_FAILURE:
		{
			return state.setIn(['brandListForLifeStyle', 'hasSuccess'], false);
		}
		case GET_BRAND_RESOURCE_FOR_BOY_REQUEST:
		{
			return state;
		}
		case GET_BRAND_RESOURCE_FOR_BOY_SUCCESS:
		{
			let {
				banner,
				custom_brands,
				brandsText,
			} = action.payload;

			return state.setIn(['reourceForBoy', 'banner'], Immutable.fromJS(banner))
			.setIn(['reourceForBoy', 'custom_brands'], Immutable.fromJS(custom_brands))
			.setIn(['reourceForBoy', 'brandsText'], Immutable.fromJS(brandsText))
			.setIn(['reourceForBoy', 'hasSuccess'], true);
		}
		case GET_BRAND_RESOURCE_FOR_BOY_FAILURE:
		{
			return state.setIn(['reourceForBoy', 'hasSuccess'], false);
		}

		case GET_BRAND_RESOURCE_FOR_GIRL_REQUEST:
		{
			return state;
		}
		case GET_BRAND_RESOURCE_FOR_GIRL_SUCCESS:
		{
			let {
				banner,
				custom_brands,
				brandsText,
			} = action.payload;

			return state.setIn(['reourceForGirl', 'banner'], Immutable.fromJS(banner))
			.setIn(['reourceForGirl', 'custom_brands'], Immutable.fromJS(custom_brands))
			.setIn(['reourceForGirl', 'brandsText'], Immutable.fromJS(brandsText))
			.setIn(['reourceForGirl', 'hasSuccess'], true);
		}
		case GET_BRAND_RESOURCE_FOR_GIRL_FAILURE:
		{
			return state.setIn(['reourceForGirl', 'hasSuccess'], false);
		}

		case GET_BRAND_RESOURCE_FOR_KID_REQUEST:
		{
			return state;
		}
		case GET_BRAND_RESOURCE_FOR_KID_SUCCESS:
		{
			let {
				banner,
				custom_brands,
				brandsText,
			} = action.payload;

			return state.setIn(['reourceForKid', 'banner'], Immutable.fromJS(banner))
			.setIn(['reourceForKid', 'custom_brands'], Immutable.fromJS(custom_brands))
			.setIn(['reourceForKid', 'brandsText'], Immutable.fromJS(brandsText))
			.setIn(['reourceForKid', 'hasSuccess'], true);
		}
		case GET_BRAND_RESOURCE_FOR_KID_FAILURE:
		{
			return state.setIn(['reourceForKid', 'hasSuccess'], false);
		}

		case GET_BRAND_RESOURCE_FOR_LIFESTYLE_REQUEST:
		{
			return state;
		}
		case GET_BRAND_RESOURCE_FOR_LIFESTYLE_SUCCESS:
		{
			let {
				banner,
				custom_brands,
				brandsText,
			} = action.payload;

			return state.setIn(['reourceForLifeStyle', 'banner'], Immutable.fromJS(banner))
			.setIn(['reourceForLifeStyle', 'custom_brands'], Immutable.fromJS(custom_brands))
			.setIn(['reourceForLifeStyle', 'brandsText'], Immutable.fromJS(brandsText))
			.setIn(['reourceForLifeStyle', 'hasSuccess'], true);
		}
		case GET_BRAND_RESOURCE_FOR_LIFESTYLE_FAILURE:
		{
			return state.setIn(['reourceForLifeStyle', 'hasSuccess'], false);
		}

		case FETCH_BRAND_SEARCH_HISTORY:
    	case INSERT_BRAND_SEARCH_HISTORY:
    	case CLEAR_BRAND_SEARCH_HISTORY: {
    		return state.setIn(['search', 'history'], Immutable.fromJS(action.payload));
    	}

    	case BRAND_HOT_KEYWORD_REQUEST: {
			return state.setIn(['search', 'isFetching'], true)
			.setIn(['search', 'error'], null);
		}

		case BRAND_HOT_KEYWORD_SUCCESS: {
			let {list} = action.payload;
			return state.setIn(['search', 'isFetching'], false)
			.setIn(['search', 'error'], null)
			.setIn(['search', 'hot'], Immutable.fromJS(list));
		}

		case BRAND_HOT_KEYWORD_FAILURE: {
			return state.setIn(['search', 'isFetching'], false)
			.setIn(['search', 'error'], action.payload);
		}
    }

    return state;
}