export function reducer()

in initializer-page/src/components/reducer/App.js [61:122]


export function reducer(state, action) {
  switch (action.type) {
    case 'UPDATE': {
      const newState = { ...state }
      const keysContext = Object.keys(defaultAppContext)
      const keys = Object.keys(get(action, 'payload', {}))
      keys.map(key => {
        if (keysContext.indexOf(key) === -1) {
          throw Error('Error AppProvider, invalid paylaod field action')
        }
        const value = get(action, `payload.${key}`)
        set(newState, key, value)
        if (key === 'theme') {
          localStorage.setItem('springtheme', value)
        }
        return key
      })
      return newState
    }
    case 'TOGGLE_GROUP': {
      const id = get(action, 'payload.id')
      let groupsOpened = [...state.groupsOpened]
      if (groupsOpened.indexOf(id) > -1) {
        groupsOpened = [...groupsOpened.filter(g => g !== id)]
      } else {
        groupsOpened = [...groupsOpened, id]
      }
      return { ...state, groupsOpened }
    }
    case 'UPDATE_DEPENDENCIES': {
      const dependencies = reduceDependencies(
        get(action, 'payload.boot'),
        get(action, 'payload.dubboVersion'),
        get(state, 'config.lists.dependencies')
      )
      return { ...state, dependencies }
    }
    case 'SHARE_UPDATE': {
      const share = get(action, 'payload.open', false)
      return { ...state, share }
    }
    case 'EXPLORE_UPDATE': {
      const explore = get(action, 'payload.open', false)
      return { ...state, explore }
    }
    case 'FETCH_UPDATE': {
      const fetch = get(action, 'payload.open', false)
      return { ...state, fetch }
    }
    case 'COMPLETE': {
      const json = get(action, 'payload', {})
      const dependencies = reduceDependencies(
        get(json, 'defaultValues.boot'),
        get(json, 'defaultValues.dubboVersion'),
        get(json, 'lists.dependencies')
      )
      return { ...state, complete: true, config: json, dependencies }
    }
    default:
      return state
  }
}