darabos commited on
Commit
97c9ed9
·
1 Parent(s): 3dc5b64

Display an error message if the workspace fails to render.

Browse files
Files changed (1) hide show
  1. 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 { BrowserRouter, Route, Routes } from "react-router";
 
 
 
 
 
 
 
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
- <BrowserRouter>
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
  );