-
Notifications
You must be signed in to change notification settings - Fork 20
Expand file tree
/
Copy pathApp.jsx
More file actions
44 lines (39 loc) · 1.4 KB
/
App.jsx
File metadata and controls
44 lines (39 loc) · 1.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom";
import { useState, useMemo } from "react";
import { ApolloProvider } from '@apollo/client/react';
import NotifierContext from "./context/NotifierContext";
import client from './lib/apolloClient';
import HomePage from "./pages/HomePage";
import InfoPage from "./pages/InfoPage";
import ProjectsPage from "./pages/ProjectsPage";
import ProjectInfoPage from "./pages/ProjectInfoPage";
const App = () => {
const [message, setMessage] = useState("");
const [errorMessage, setErrorMessage] = useState(null)
const context = useMemo(
() => ({
message,
setMessage: (text) => setMessage(text),
clearMessage: () => setMessage(""),
errorMessage,
setErrorMessage: (text) => setErrorMessage(text),
}),
[message, errorMessage],
);
return (
<NotifierContext.Provider value={context}>
<ApolloProvider client={client}>
<BrowserRouter>
<Routes>
<Route path="/" element={<HomePage />} />
<Route path="/info" element={<InfoPage />} />
<Route path="/projects" element={<ProjectsPage />} />
<Route path="/projects/:id" element={<ProjectInfoPage />} />
<Route path="*" element={<Navigate to="/" replace />} />
</Routes>
</BrowserRouter>
</ApolloProvider>
</NotifierContext.Provider>
);
};
export default App;