import createReducer from 'utils/createReducer'; import * as actions from './actions'; const HISTORY_MAX_LENGTH = 128; const initialState = { history: [], index: 0 }; export const getCurrentInputHistoryEntry = state => { if (state.input.index === -1) { return null; } return state.input.history[state.input.index]; }; export default createReducer(initialState, { [actions.INPUT_HISTORY_ADD](state, { line }) { if (line.trim() && line !== state.history[0]) { if (state.history.length === HISTORY_MAX_LENGTH) { state.history.pop(); } state.history.unshift(line); } }, [actions.INPUT_HISTORY_RESET](state) { state.index = -1; }, [actions.INPUT_HISTORY_INCREMENT](state) { if (state.index < state.history.length - 1) { state.index++; } }, [actions.INPUT_HISTORY_DECREMENT](state) { if (state.index >= 0) { state.index--; } } }); export function addInputHistory(line) { return { type: actions.INPUT_HISTORY_ADD, line }; } export function resetInputHistory() { return { type: actions.INPUT_HISTORY_RESET }; } export function incrementInputHistory() { return { type: actions.INPUT_HISTORY_INCREMENT }; } export function decrementInputHistory() { return { type: actions.INPUT_HISTORY_DECREMENT }; }