// update.js // Pure update function /** * @param {object} state - Current state * @param {object} action - { type, payload } * @returns {object} new state */ export function update(state, action) { switch (action.type) { case 'UPDATE_QUERY': return { ...state, query: action.payload, error: null }; case 'FETCH_START': return { ...state, loading: true, error: null, pokemon: null, evolutionChain: null }; case 'FETCH_SUCCESS': return { ...state, loading: false, error: null, pokemon: action.payload }; case 'FETCH_ERROR': return { ...state, loading: false, error: action.payload, pokemon: null }; case 'FETCH_EVOLUTION_START': return { ...state, loading: true, error: null, evolutionChain: null }; case 'FETCH_EVOLUTION_SUCCESS': return { ...state, loading: false, error: null, evolutionChain: action.payload }; case 'FETCH_EVOLUTION_ERROR': return { ...state, loading: false, error: action.payload, evolutionChain: null }; case 'UPDATE_BABA_YAGA_SCRIPT': return { ...state, babaYagaScript: action.payload, scriptError: null }; case 'EXECUTE_SCRIPT_START': return { ...state, scriptError: null, scriptOutput: null }; case 'EXECUTE_SCRIPT_SUCCESS': return { ...state, scriptOutput: action.payload, scriptError: null }; case 'EXECUTE_SCRIPT_ERROR': return { ...state, scriptError: action.payload, scriptOutput: null }; case 'CLEAR_SCRIPT_OUTPUT': return { ...state, scriptOutput: null, scriptError: null }; default: return state; } }