diff options
author | Shin'ya Ueoka <ueokande@i-beam.org> | 2021-04-11 18:00:51 +0900 |
---|---|---|
committer | Shin'ya Ueoka <ueokande@i-beam.org> | 2021-04-11 22:34:14 +0900 |
commit | 618fb497c443662531eb3befe7696a04efe9651d (patch) | |
tree | 530af78bf75f03e7ffd71e4ca5ad1cf864584be0 /src/console/reducers/completion.ts | |
parent | 21f863d76fbb5ed752ad529f8fbe33e75460027e (diff) |
Replace completion state with Custom Hooks
Diffstat (limited to 'src/console/reducers/completion.ts')
-rw-r--r-- | src/console/reducers/completion.ts | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/src/console/reducers/completion.ts b/src/console/reducers/completion.ts deleted file mode 100644 index 2c7ee55..0000000 --- a/src/console/reducers/completion.ts +++ /dev/null @@ -1,99 +0,0 @@ -import Completions from "../Completions"; -import CompletionType from "../../shared/CompletionType"; -import { - COMPLETION_COMPLETION_NEXT, - COMPLETION_COMPLETION_PREV, - COMPLETION_SET_COMPLETIONS, - COMPLETION_START_COMPLETION, - CompletionAction, -} from "../actions/completion"; - -export interface State { - completionTypes: CompletionType[]; - completionSource: string; - completions: Completions; - select: number; -} - -export const defaultState = { - completionTypes: [], - completionSource: "", - completions: [], - select: -1, -}; - -const nextSelection = (state: State): number => { - if (state.completions.length === 0) { - return -1; - } - if (state.select < 0) { - return 0; - } - - const length = state.completions - .map((g) => g.items.length) - .reduce((x, y) => x + y); - if (state.select + 1 < length) { - return state.select + 1; - } - return -1; -}; - -const prevSelection = (state: State): number => { - const length = state.completions - .map((g) => g.items.length) - .reduce((x, y) => x + y); - if (state.select < 0) { - return length - 1; - } - return state.select - 1; -}; - -export const completedText = (state: State): string => { - if (state.select < 0) { - return state.completionSource; - } - const items = state.completions - .map((g) => g.items) - .reduce((g1, g2) => g1.concat(g2)); - return items[state.select].content || ""; -}; - -// eslint-disable-next-line max-lines-per-function -export default function reducer( - state: State = defaultState, - action: CompletionAction -): State { - switch (action.type) { - case COMPLETION_START_COMPLETION: - return { - ...state, - completionTypes: action.completionTypes, - completions: [], - select: -1, - }; - case COMPLETION_SET_COMPLETIONS: - return { - ...state, - completions: action.completions, - completionSource: action.completionSource, - select: -1, - }; - case COMPLETION_COMPLETION_NEXT: { - const select = nextSelection(state); - return { - ...state, - select: select, - }; - } - case COMPLETION_COMPLETION_PREV: { - const select = prevSelection(state); - return { - ...state, - select: select, - }; - } - default: - return state; - } -} |