-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApp.js
103 lines (97 loc) · 3.43 KB
/
App.js
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import React, { useContext, useEffect } from "react";
import { BrowserRouter as Router, Route, Routes, useLocation } from "react-router-dom";
import Header from "./components/Header";
import Login from "./components/Login";
import Signup from "./components/Signup";
import Dashboard from "./components/Dashboard";
import PostForm from "./components/PostForm";
import EditForm from "./components/EditForm";
import Home from "./components/Home";
import PrivateRoute from "./components/PrivateRoute";
import Logout from "./components/Logout";
import Profile from "./components/Profile";
import Settings from "./components/Settings";
import Packages from "./components/Packages";
import Fish from "./components/Fish";
import Footer from "./components/Footer";
import { AuthProvider, AuthContext } from "./context/AuthContext";
import { ThemeProvider, ThemeContext } from "./context/ThemeContext";
import Raffles from './components/Raffles';
import "./App.css";
import "./components/NFTCard.css";
import "./components/Footer.css";
import Proposals from "./components/Proposals"; // Import the Proposals component
const App = () => {
return (
<AuthProvider>
<ThemeProvider>
<AppContent />
</ThemeProvider>
</AuthProvider>
);
};
const AppContent = () => {
const { isDarkMode } = useContext(ThemeContext);
const { handleDiscordLogin, auth } = useContext(AuthContext);
const location = useLocation();
useEffect(() => {
if (isDarkMode) {
document.body.classList.add("dark-mode");
} else {
document.body.classList.remove("dark-mode");
}
}, [isDarkMode]);
useEffect(() => {
const params = new URLSearchParams(location.search);
const token = params.get('token');
if (token) {
console.log('Received Token:', token);
handleDiscordLogin(token);
window.location.href = '/dashboard'; // Redirect to dashboard after storing token
}
}, [location, handleDiscordLogin]);
return (
<div className="app">
<Header />
<div className="content">
<Routes>
<Route path="/" element={<Home />} />
<Route path="/login" element={<Login />} />
<Route path="/signup" element={<Signup />} />
<Route path="/logout" element={<Logout />} />
<Route path="/packages" element={<Packages />} />
<Route path="/raffles" element={<Raffles />} />
<Route path="/profile" element={
<PrivateRoute isAuthenticated={auth.isAuthenticated}>
<Profile />
</PrivateRoute>
} />
<Route path="/dashboard" element={
<PrivateRoute isAuthenticated={auth.isAuthenticated} requiredRole="admin">
<Dashboard />
</PrivateRoute>
} />
<Route path="/post" element={
<PrivateRoute isAuthenticated={auth.isAuthenticated}>
<PostForm />
</PrivateRoute>
} />
<Route path="/settings" element={<Settings />} />
<Route path="/fish" element={<Fish />} />
<Route path="/edit/:id" element={
<PrivateRoute isAuthenticated={auth.isAuthenticated}>
<EditForm />
</PrivateRoute>
} />
<Route path="/proposals" element={
<PrivateRoute isAuthenticated={auth.isAuthenticated}>
<Proposals />
</PrivateRoute>
} />
</Routes>
</div>
<Footer />
</div>
);
};
export default App;