summaryrefslogtreecommitdiff
path: root/extension/react-app/src/App.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'extension/react-app/src/App.tsx')
-rw-r--r--extension/react-app/src/App.tsx62
1 files changed, 59 insertions, 3 deletions
diff --git a/extension/react-app/src/App.tsx b/extension/react-app/src/App.tsx
index aa462171..879373a0 100644
--- a/extension/react-app/src/App.tsx
+++ b/extension/react-app/src/App.tsx
@@ -1,8 +1,43 @@
-import DebugPanel from "./components/DebugPanel";
import GUI from "./pages/gui";
-import { createContext } from "react";
+import History from "./pages/history";
+import Layout from "./components/Layout";
+import { createContext, useEffect } from "react";
import useContinueGUIProtocol from "./hooks/useWebsocket";
import ContinueGUIClientProtocol from "./hooks/ContinueGUIClientProtocol";
+import { useDispatch } from "react-redux";
+import {
+ setApiUrl,
+ setVscMachineId,
+ setSessionId,
+ setVscMediaUrl,
+ setDataSwitchOn,
+} from "./redux/slices/configSlice";
+import { setHighlightedCode } from "./redux/slices/miscSlice";
+import { postVscMessage } from "./vscode";
+import { createBrowserRouter, RouterProvider } from "react-router-dom";
+import ErrorPage from "./pages/error";
+
+const router = createBrowserRouter([
+ {
+ path: "/",
+ element: <Layout />,
+ errorElement: <ErrorPage />,
+ children: [
+ {
+ path: "/index.html",
+ element: <GUI />,
+ },
+ {
+ path: "/",
+ element: <GUI />,
+ },
+ {
+ path: "/history",
+ element: <History />,
+ },
+ ],
+ },
+]);
export const GUIClientContext = createContext<
ContinueGUIClientProtocol | undefined
@@ -11,9 +46,30 @@ export const GUIClientContext = createContext<
function App() {
const client = useContinueGUIProtocol();
+ const dispatch = useDispatch();
+ useEffect(() => {
+ const eventListener = (event: any) => {
+ switch (event.data.type) {
+ case "onLoad":
+ dispatch(setApiUrl(event.data.apiUrl));
+ dispatch(setVscMachineId(event.data.vscMachineId));
+ dispatch(setSessionId(event.data.sessionId));
+ dispatch(setVscMediaUrl(event.data.vscMediaUrl));
+ dispatch(setDataSwitchOn(event.data.dataSwitchOn));
+ break;
+ case "highlightedCode":
+ dispatch(setHighlightedCode(event.data.rangeInFile));
+ break;
+ }
+ };
+ window.addEventListener("message", eventListener);
+ postVscMessage("onLoad", {});
+ return () => window.removeEventListener("message", eventListener);
+ }, []);
+
return (
<GUIClientContext.Provider value={client}>
- <DebugPanel tabs={[{ element: <GUI />, title: "GUI" }]} />
+ <RouterProvider router={router} />
</GUIClientContext.Provider>
);
}