home.tsx 1.81 KB
Newer Older
dechen lin's avatar
dechen lin committed
1
2
3
4
5
"use client";

import ErrorBoundary from "@/components/error-boundary";
import styles from "./home.module.scss";
import { SlotID, Path } from "@/constant/route";
dechen lin's avatar
dechen lin committed
6
7
8
9
10
11
12
13
14
import {
  BrowserRouter,
  Routes,
  Route,
  Outlet,
  Navigate,
  useLocation,
  HashRouter,
} from "react-router-dom";
dechen lin's avatar
dechen lin committed
15
16
17
18
19
20
import { ExtractorSide } from "./extract-side";
import { LanguageProvider } from "@/context/language-provider";
import PDFUpload from "@/pages/extract/components/pdf-upload";
import PDFExtractionJob from "@/pages/extract/components/pdf-extraction";

export function WindowContent() {
dechen lin's avatar
dechen lin committed
21
  const location = useLocation();
dechen lin's avatar
dechen lin committed
22
  const isHome = location.pathname === Path.Home;
dechen lin's avatar
dechen lin committed
23

dechen lin's avatar
dechen lin committed
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
  return (
    <>
      <ExtractorSide className={isHome ? styles["sidebar-show"] : ""} />
      <div className="flex-1">
        <Outlet />
      </div>
    </>
  );
}

function Screen() {
  const renderContent = () => {
    return (
      <div className="w-full h-full flex" id={SlotID.AppBody}>
        <Routes>
          <Route path="/" element={<WindowContent />}>
dechen lin's avatar
dechen lin committed
40
41
42
43
            <Route
              index
              element={<Navigate to="/OpenSourceTools/Extractor/PDF" replace />}
            />
dechen lin's avatar
dechen lin committed
44
45
46
47
48
49
50
51
            <Route
              path="/OpenSourceTools/Extractor/PDF"
              element={<PDFUpload />}
            />
            <Route
              path="/OpenSourceTools/Extractor/PDF/:jobID"
              element={<PDFExtractionJob />}
            />
dechen lin's avatar
dechen lin committed
52
53
54
55
            <Route
              path="*"
              element={<Navigate to="/OpenSourceTools/Extractor/PDF" replace />}
            />
dechen lin's avatar
dechen lin committed
56
57
58
59
60
61
62
63
64
65
66
67
68
          </Route>
        </Routes>
      </div>
    );
  };

  return <>{renderContent()}</>;
}

export function Home() {
  return (
    <ErrorBoundary>
      <LanguageProvider>
houlinfeng's avatar
houlinfeng committed
69
        <HashRouter>
dechen lin's avatar
dechen lin committed
70
          <Screen />
houlinfeng's avatar
houlinfeng committed
71
        </HashRouter>
dechen lin's avatar
dechen lin committed
72
73
74
75
      </LanguageProvider>
    </ErrorBoundary>
  );
}