diff options
Diffstat (limited to 'extension/react-app/src')
| -rw-r--r-- | extension/react-app/src/App.tsx | 2 | ||||
| -rw-r--r-- | extension/react-app/src/components/ComboBox.tsx | 18 | ||||
| -rw-r--r-- | extension/react-app/src/redux/slices/configSlice.ts | 8 | ||||
| -rw-r--r-- | extension/react-app/src/redux/store.ts | 2 | 
4 files changed, 20 insertions, 10 deletions
| diff --git a/extension/react-app/src/App.tsx b/extension/react-app/src/App.tsx index 879373a0..05b322ff 100644 --- a/extension/react-app/src/App.tsx +++ b/extension/react-app/src/App.tsx @@ -11,6 +11,7 @@ import {    setSessionId,    setVscMediaUrl,    setDataSwitchOn, +  setWorkspacePaths,  } from "./redux/slices/configSlice";  import { setHighlightedCode } from "./redux/slices/miscSlice";  import { postVscMessage } from "./vscode"; @@ -56,6 +57,7 @@ function App() {            dispatch(setSessionId(event.data.sessionId));            dispatch(setVscMediaUrl(event.data.vscMediaUrl));            dispatch(setDataSwitchOn(event.data.dataSwitchOn)); +          dispatch(setWorkspacePaths(event.data.workspacePaths));            break;          case "highlightedCode":            dispatch(setHighlightedCode(event.data.rangeInFile)); diff --git a/extension/react-app/src/components/ComboBox.tsx b/extension/react-app/src/components/ComboBox.tsx index bf32fc5a..4e564000 100644 --- a/extension/react-app/src/components/ComboBox.tsx +++ b/extension/react-app/src/components/ComboBox.tsx @@ -24,7 +24,8 @@ import {    setBottomMessage,    setBottomMessageCloseTimeout,  } from "../redux/slices/uiStateSlice"; -import { useDispatch } from "react-redux"; +import { useDispatch, useSelector } from "react-redux"; +import { RootStore } from "../redux/store";  const SEARCH_INDEX_NAME = "continue_context_items"; @@ -136,6 +137,7 @@ const ComboBox = React.forwardRef((props: ComboBoxProps, ref) => {    const searchClient = new MeiliSearch({ host: "http://127.0.0.1:7700" });    const client = useContext(GUIClientContext);    const dispatch = useDispatch(); +  const workspacePaths = useSelector((state: RootStore) => state.config.workspacePaths);    const [history, setHistory] = React.useState<string[]>([]);    // The position of the current command you are typing now, so the one that will be appended to history once you press enter @@ -181,10 +183,16 @@ const ComboBox = React.forwardRef((props: ComboBoxProps, ref) => {            // Get search results and return            setCurrentlyInContextQuery(true);            const providerAndQuery = segs[segs.length - 1] || ""; -          const [provider, query] = providerAndQuery.split(" "); +          // Only return context items from the current workspace - the index is currently shared between all sessions +          const workspaceFilter =  +            workspacePaths && workspacePaths.length > 0  +            ? `workspace_dir IN [ ${workspacePaths.map((path) => `"${path}"`).join(", ")} ]`  +            : undefined;            searchClient              .index(SEARCH_INDEX_NAME) -            .search(providerAndQuery) +            .search(providerAndQuery, { +              filter: workspaceFilter, +            })              .then((res) => {                setItems(                  res.hits.map((hit) => { @@ -410,7 +418,7 @@ const ComboBox = React.forwardRef((props: ComboBoxProps, ref) => {                  // Prevent Downshift's default 'Enter' behavior.                  (event.nativeEvent as any).preventDownshiftDefault = true; -                if (props.onEnter) props.onEnter(event); +                if (props.onEnter) {props.onEnter(event);}                  setCurrentlyInContextQuery(false);                } else if (event.key === "Tab" && items.length > 0) {                  downshiftProps.setInputValue(items[0].name); @@ -423,7 +431,7 @@ const ComboBox = React.forwardRef((props: ComboBoxProps, ref) => {                ) {                  (event.nativeEvent as any).preventDownshiftDefault = true;                } else if (event.key === "ArrowUp") { -                if (positionInHistory == 0) return; +                if (positionInHistory == 0) {return;}                  else if (                    positionInHistory == history.length &&                    (history.length === 0 || diff --git a/extension/react-app/src/redux/slices/configSlice.ts b/extension/react-app/src/redux/slices/configSlice.ts index 59c76066..9cf5402f 100644 --- a/extension/react-app/src/redux/slices/configSlice.ts +++ b/extension/react-app/src/redux/slices/configSlice.ts @@ -7,13 +7,13 @@ export const configSlice = createSlice({      apiUrl: "http://localhost:65432",    } as RootStore["config"],    reducers: { -    setWorkspacePath: ( +    setWorkspacePaths: (        state: RootStore["config"], -      action: { type: string; payload: string } +      action: { type: string; payload: string[] }      ) => {        return {          ...state, -        workspacePath: action.payload, +        workspacePaths: action.payload,        };      },      setApiUrl: ( @@ -57,7 +57,7 @@ export const configSlice = createSlice({  export const {    setVscMachineId,    setApiUrl, -  setWorkspacePath, +  setWorkspacePaths,    setSessionId,    setVscMediaUrl,    setDataSwitchOn, diff --git a/extension/react-app/src/redux/store.ts b/extension/react-app/src/redux/store.ts index a9a45ec1..7959a067 100644 --- a/extension/react-app/src/redux/store.ts +++ b/extension/react-app/src/redux/store.ts @@ -14,7 +14,7 @@ export interface ChatMessage {  export interface RootStore {    config: { -    workspacePath: string | undefined; +    workspacePaths: string[] | undefined;      apiUrl: string;      vscMachineId: string | undefined;      sessionId: string | undefined; | 
