Example #1
0
export default handleActions(
  () => ({
    [challenges.challengeUpdated]: () => {
      console.log('updating step ui');
      return initialState;
    },
    [types.goToStep]: (state, { payload: { step = 0, isUnlocked }}) => ({
      ...state,
      currentIndex: step,
      previousIndex: state.currentIndex,
      isActionCompleted: isUnlocked
    }),
    [types.completeAction]: state => ({
      ...state,
      isActionCompleted: true
    }),
    [types.updateUnlockedSteps]: (state, { payload }) => ({
      ...state,
      unlockedSteps: payload
    }),
    [types.clickOnImage]: state => ({
      ...state,
      isLightBoxOpen: true
    }),
    [types.closeLightBoxImage]: state => ({
      ...state,
      isLightBoxOpen: false
    })
  }),
  initialState,
  ns
);
Example #2
0
export const correctSelector = state => getNS(state).correct;

export default handleActions(
  () => ({
    [types.nextQuestion]: state => ({
      ...state,
      currentIndex: state.currentIndex + 1
    }),
    [types.selectChoice]: (state, {payload}) => ({
      ...state,
      selectedChoice: payload.selectedChoice
    }),
    [types.incrementCorrect]: state => ({
      ...state,
      correct: state.correct + 1
    }),
    [types.resetQuiz]: state => ({
      ...state,
      currentIndex: 0,
      correct: 0,
      selectedChoice: null
    }),
    [types.resetChoice]: state => ({
      ...state,
      selectedChoice: null
    })
  }),
  initialState,
  ns
);
Example #3
0
 handleActions(
   () => ({
     [map.fetchMapUi.complete]: (state, { payload: { entities } }) =>
       merge({}, state, entities),
     [types.addPortfolioItem]: (state, { payload: username }) => ({
       ...state,
       user: {
         ...state.user,
         [username]: {
           ...state.user[username],
           portfolio: [
             ...state.user[username].portfolio,
             emptyPortfolio()
           ]
         }
       }
     }),
     [types.optoUpdatePortfolio]: (
       state,
       { payload: { username, portfolio }}
     ) => {
       const currentPortfolio = state.user[username].portfolio.slice(0);
       const pIndex = findIndex(currentPortfolio, p => p.id === portfolio.id);
       const updatedPortfolio = currentPortfolio;
       updatedPortfolio[pIndex] = portfolio;
       return {
         ...state,
         user: {
           ...state.user,
           [username]: {
             ...state.user[username],
             portfolio: updatedPortfolio
           }
         }
       };
     },
     [types.regresPortfolio]: (state, { payload: { username, id } }) => ({
       ...state,
       user: {
         ...state.user,
         [username]: {
           ...state.user[username],
           portfolio: state.user[username].portfolio.filter(p => p.id !== id)
         }
       }
     }),
     [types.updateMultipleUserFlags]: (
       state,
       { payload: { username, flags }}
     ) => ({
       ...state,
       user: {
         ...state.user,
         [username]: {
           ...state.user[username],
           ...flags
         }
       }
     }),
     [types.updateUserFlag]: (state, { payload: { username, flag } }) => ({
       ...state,
       user: {
         ...state.user,
         [username]: {
           ...state.user[username],
           [flag]: !state.user[username][flag]
         }
       }
     }),
     [types.updateUserEmail]: (state, { payload: { username, email } }) => ({
       ...state,
       user: {
         ...state.user,
         [username]: {
           ...state.user[username],
           email
         }
       }
     }),
     [types.updateUserLang]:
     (
       state,
       {
         payload: { username, languageTag }
       }
     ) => ({
       ...state,
       user: {
         ...state.user,
         [username]: {
           ...state.user[username],
           languageTag
         }
       }
     }),
     [types.updateLocalProfileUI]:
     (
       state,
       { payload: { username, profileUI } }
     ) => ({
       ...state,
       user: {
         ...state.user,
         [username]: {
           ...state.user[username],
           profileUI: {
             ...state.user[username].profileUI,
             ...profileUI
           }
         }
       }
     })
   }),
   defaultState
 )