Skip to content

Commit

Permalink
feat: frontend-backend finally working together :D
Browse files Browse the repository at this point in the history
  • Loading branch information
rohan-b-84 committed Jul 11, 2024
1 parent c5a043f commit 9779866
Show file tree
Hide file tree
Showing 27 changed files with 853 additions and 1,131 deletions.
1 change: 0 additions & 1 deletion frontend/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="icon" href="./src/assets/logo.ico" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css" integrity="sha512-SnH5WK+bZxgPHs44uWIX+LLJAJ9/2PkPKZ5QiAj6Ta86w+fsb2TkcmfRyVX3pBnMFcV7oQPJkl9QevSCWr3W6A==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<title>MetaKGP - GYFE</title>
</head>
<body>
Expand Down
3 changes: 0 additions & 3 deletions frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@
"preview": "vite preview"
},
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^6.5.2",
"@fortawesome/free-solid-svg-icons": "^6.5.2",
"@fortawesome/react-fontawesome": "^0.2.2",
"@hookform/resolvers": "^3.6.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
Expand Down
63 changes: 0 additions & 63 deletions frontend/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

63 changes: 12 additions & 51 deletions frontend/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,59 +1,20 @@
import React, { useState, useContext } from "react";
import {
BrowserRouter as Router,
Routes,
Route,
Navigate,
} from "react-router-dom";
import { UserContext } from "./app-context/user-context";
import "./styles/App.scss";
import React from "react";
import Header from "./components/Header";
import Footer from "./components/Footer";
import Electives from "./components/Electives";
import MultiForm from "./components/MultiForm";
import About from "./components/About";
import Modal from "./components/Modal";
import { Toaster } from "react-hot-toast";

const App: React.FC = () => {
const [openModal, setOpenModal] = useState(false);
const { user } = useContext(UserContext);

// const [isLoggedIn, setLogin] = useState<boolean>(() => {
// const savedLoginstate = sessionStorage.getItem('loginStatus');
// return savedLoginstate == 'true'; // by default false if session not stored
// });

// useEffect(() => {
// sessionStorage.setItem('loginStatus',isLoggedIn.toString());
// }, [isLoggedIn]);

// const updateStatus = () => { // Prop to control login status
// setLogin(true);
// }

return (
<Router>
<div className="App">
<Header />
<Routes>
<Route path="/login" element={<MultiForm />} />
<Route
path="/"
element={
!!sessionStorage.getItem("ssoToken") ? (
<Electives />
) : (
<Navigate to="/login" />
)
}
/>
</Routes>
<About setOpenModal={setOpenModal} />
{openModal && <Modal closeModal={setOpenModal} />}
<Footer />
</div>
</Router>
);
return (
<>
<Toaster position="bottom-center" />
<div>
<Header />
<MultiForm />
</div>
<Footer />
</>
);
};

export default App;
64 changes: 64 additions & 0 deletions frontend/src/AppContext/AppContext.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import React, { useState, createContext, useContext } from "react";

interface IProps {
children: React.ReactNode;
}
interface IUser {
rollNo: string;
password: string;
securityQuestion: string;
securityAnswer: string;
ssoToken: string | null;
sessionToken: string | null;
}
interface IAuth {
user: IUser;
currentStep: number;
}
interface IContext {
authState: IAuth;
setAuth: React.Dispatch<React.SetStateAction<IAuth>>;
logout: () => void;
}

const DEFAULT_USER: IUser = {
rollNo: "",
password: "",
securityQuestion: "",
securityAnswer: "",
ssoToken: sessionStorage.getItem("ssoToken"),
sessionToken: sessionStorage.getItem("sessionToken"),
};

export const AppContext = createContext<IContext | null>(null);

export const AppProvider: React.FC<IProps> = ({ children }) => {
const [authState, setAuth] = useState<IAuth>({
user: DEFAULT_USER,
currentStep: 0,
});

const logout = () => {
sessionStorage.removeItem("ssoToken");
sessionStorage.removeItem("sessionToken");
setAuth({ user: DEFAULT_USER, currentStep: 0 });
};

return (
<AppContext.Provider value={{ authState, setAuth, logout }}>
{children}
</AppContext.Provider>
);
};

export const useAppContext = () => {
const context = useContext(AppContext);
if (!context) {
throw new Error("useAppContext must be used within an AppProvider");
}
return {
...context.authState,
setAuth: context.setAuth,
logout: context.logout,
};
};
22 changes: 0 additions & 22 deletions frontend/src/app-context/user-context-provider.tsx

This file was deleted.

30 changes: 0 additions & 30 deletions frontend/src/app-context/user-context.tsx

This file was deleted.

Loading

0 comments on commit 9779866

Please sign in to comment.