diff options
Diffstat (limited to 'src/console/reducers')
-rw-r--r-- | src/console/reducers/index.js | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/src/console/reducers/index.js b/src/console/reducers/index.js index d4affa7..60c0007 100644 --- a/src/console/reducers/index.js +++ b/src/console/reducers/index.js @@ -3,7 +3,8 @@ import actions from 'console/actions'; const defaultState = { mode: '', messageText: '', - commandText: '', + consoleText: '', + completionSource: '', completions: [], groupSelection: -1, itemSelection: -1, @@ -43,13 +44,25 @@ const prevSelection = (state) => { return [state.groupSelection, state.itemSelection - 1]; }; +const nextConsoleText = (completions, group, item, defaults) => { + if (group < 0 || item < 0) { + return defaults; + } + return completions[group].items[item].content; +}; + export default function reducer(state = defaultState, action = {}) { switch (action.type) { case actions.CONSOLE_SHOW_COMMAND: return Object.assign({}, state, { mode: 'command', - commandText: action.text, - errorShown: false, + consoleText: action.text, + completions: [] + }); + case actions.CONSOLE_SHOW_FIND: + return Object.assign({}, state, { + mode: 'find', + consoleText: '', completions: [] }); case actions.CONSOLE_SHOW_ERROR: @@ -64,11 +77,16 @@ export default function reducer(state = defaultState, action = {}) { }); case actions.CONSOLE_HIDE_COMMAND: return Object.assign({}, state, { - mode: state.mode === 'command' ? '' : state.mode, + mode: state.mode === 'command' || state.mode === 'find' ? '' : state.mode, + }); + case actions.CONSOLE_SET_CONSOLE_TEXT: + return Object.assign({}, state, { + consoleText: action.consoleText, }); case actions.CONSOLE_SET_COMPLETIONS: return Object.assign({}, state, { completions: action.completions, + completionSource: action.completionSource, groupSelection: -1, itemSelection: -1, }); @@ -77,6 +95,9 @@ export default function reducer(state = defaultState, action = {}) { return Object.assign({}, state, { groupSelection: next[0], itemSelection: next[1], + consoleText: nextConsoleText( + state.completions, next[0], next[1], + state.completionSource), }); } case actions.CONSOLE_COMPLETION_PREV: { @@ -84,6 +105,9 @@ export default function reducer(state = defaultState, action = {}) { return Object.assign({}, state, { groupSelection: next[0], itemSelection: next[1], + consoleText: nextConsoleText( + state.completions, next[0], next[1], + state.completionSource), }); } default: |