Spaces:
Running
Running
Display an error message if the workspace fails to render.
Browse files- lynxkite-app/web/src/main.tsx +41 -10
lynxkite-app/web/src/main.tsx
CHANGED
@@ -2,21 +2,52 @@ import { StrictMode } from "react";
|
|
2 |
import { createRoot } from "react-dom/client";
|
3 |
import "@xyflow/react/dist/style.css";
|
4 |
import "./index.css";
|
5 |
-
import {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
import Code from "./Code.tsx";
|
7 |
import Directory from "./Directory.tsx";
|
8 |
import Workspace from "./workspace/Workspace.tsx";
|
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
createRoot(document.getElementById("root")!).render(
|
11 |
<StrictMode>
|
12 |
-
<
|
13 |
-
<Routes>
|
14 |
-
<Route path="/" element={<Directory />} />
|
15 |
-
<Route path="/dir" element={<Directory />} />
|
16 |
-
<Route path="/dir/*" element={<Directory />} />
|
17 |
-
<Route path="/edit/*" element={<Workspace />} />
|
18 |
-
<Route path="/code/*" element={<Code />} />
|
19 |
-
</Routes>
|
20 |
-
</BrowserRouter>
|
21 |
</StrictMode>,
|
22 |
);
|
|
|
2 |
import { createRoot } from "react-dom/client";
|
3 |
import "@xyflow/react/dist/style.css";
|
4 |
import "./index.css";
|
5 |
+
import {
|
6 |
+
Link,
|
7 |
+
Route,
|
8 |
+
RouterProvider,
|
9 |
+
createBrowserRouter,
|
10 |
+
createRoutesFromElements,
|
11 |
+
useRouteError,
|
12 |
+
} from "react-router";
|
13 |
import Code from "./Code.tsx";
|
14 |
import Directory from "./Directory.tsx";
|
15 |
import Workspace from "./workspace/Workspace.tsx";
|
16 |
|
17 |
+
function WorkspaceError() {
|
18 |
+
const error = useRouteError();
|
19 |
+
const stack = error instanceof Error ? error.stack : null;
|
20 |
+
return (
|
21 |
+
<div className="hero min-h-screen">
|
22 |
+
<div className="card bg-base-100 shadow-sm">
|
23 |
+
<div className="card-body">
|
24 |
+
<h2 className="card-title">Something went wrong...</h2>
|
25 |
+
<pre>{stack || "Unknown error."}</pre>
|
26 |
+
<div className="card-actions justify-end">
|
27 |
+
<Link to="/" className="btn btn-primary">
|
28 |
+
Close workspace
|
29 |
+
</Link>
|
30 |
+
</div>
|
31 |
+
</div>
|
32 |
+
</div>
|
33 |
+
</div>
|
34 |
+
);
|
35 |
+
}
|
36 |
+
|
37 |
+
const router = createBrowserRouter(
|
38 |
+
createRoutesFromElements(
|
39 |
+
<>
|
40 |
+
<Route path="/" element={<Directory />} />
|
41 |
+
<Route path="/dir" element={<Directory />} />
|
42 |
+
<Route path="/dir/*" element={<Directory />} />
|
43 |
+
<Route path="/edit/*" element={<Workspace />} errorElement={<WorkspaceError />} />
|
44 |
+
<Route path="/code/*" element={<Code />} />
|
45 |
+
</>,
|
46 |
+
),
|
47 |
+
);
|
48 |
+
|
49 |
createRoot(document.getElementById("root")!).render(
|
50 |
<StrictMode>
|
51 |
+
<RouterProvider router={router} />
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
</StrictMode>,
|
53 |
);
|