aboutsummaryrefslogtreecommitdiff
path: root/src/console/completion/hooks.ts
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2022-03-14 13:24:01 +0000
committerShin'ya Ueoka <ueokande@i-beam.org>2022-05-05 07:27:44 +0000
commitbc890c55bfbd6d1aa4ece5b0ef96a9ab6d358ad7 (patch)
tree4b268cfb3040ee9b32c7d22d5e8fd47fac3d46bb /src/console/completion/hooks.ts
parent823bad63384de90c11653f0afa253cc5d0e19239 (diff)
Get completion types on component initialization
Diffstat (limited to 'src/console/completion/hooks.ts')
-rw-r--r--src/console/completion/hooks.ts24
1 files changed, 8 insertions, 16 deletions
diff --git a/src/console/completion/hooks.ts b/src/console/completion/hooks.ts
index ad315e6..62baab4 100644
--- a/src/console/completion/hooks.ts
+++ b/src/console/completion/hooks.ts
@@ -11,6 +11,7 @@ import CommandLineParser, {
import { UnknownCommandError } from "../commandline/CommandParser";
import Completions from "../Completions";
import CompletionType from "../../shared/CompletionType";
+import { useGetCompletionTypes } from "./hooks/clients";
const commandDocs = {
[Command.Set]: "Set a value of the property",
@@ -208,21 +209,15 @@ export const useCompletions = () => {
const state = React.useContext(CompletionStateContext);
const dispatch = React.useContext(CompletionDispatchContext);
const commandLineParser = React.useMemo(() => new CommandLineParser(), []);
+ const [completionTypes] = useGetCompletionTypes();
const updateCompletions = React.useCallback((source: string) => {
dispatch(actions.setCompletionSource(source));
}, []);
- const initCompletion = React.useCallback((source: string) => {
- completionClient.getCompletionTypes().then((completionTypes) => {
- dispatch(actions.initCompletion(completionTypes));
- dispatch(actions.setCompletionSource(source));
- });
- }, []);
-
const { delayedCallback: queryCompletions, enableDelay } = useDelayedCallback(
React.useCallback(
- (text: string, completionTypes?: CompletionType[]) => {
+ (text: string, completionTypes: CompletionType[]) => {
const phase = commandLineParser.inputPhase(text);
if (phase === InputPhase.OnCommand) {
getCommandCompletions(text).then((completions) =>
@@ -241,11 +236,6 @@ export const useCompletions = () => {
case Command.Open:
case Command.TabOpen:
case Command.WindowOpen:
- if (!completionTypes) {
- initCompletion(text);
- return;
- }
-
getOpenCompletions(cmd.command, cmd.args, completionTypes).then(
(completions) => dispatch(actions.setCompletions(completions))
);
@@ -282,13 +272,15 @@ export const useCompletions = () => {
);
React.useEffect(() => {
- queryCompletions(state.completionSource, state.completionTypes);
- }, [state.completionSource, state.completionTypes]);
+ if (typeof completionTypes === "undefined") {
+ return;
+ }
+ queryCompletions(state.completionSource, completionTypes);
+ }, [state.completionSource, completionTypes]);
return {
completions: state.completions,
updateCompletions,
- initCompletion,
};
};