From 209d9a806e09a4862c0eabebab7191cba7468390 Mon Sep 17 00:00:00 2001 From: nrmnqdds Date: Wed, 14 Feb 2024 02:25:30 +0800 Subject: [PATCH] :recycle: save session --- components/LoginForm.tsx | 4 +++- components/ProfileDropdown.tsx | 4 ++-- context/ImaluumProvider.tsx | 14 ++++++++------ middleware.ts | 18 ------------------ 4 files changed, 13 insertions(+), 27 deletions(-) delete mode 100644 middleware.ts diff --git a/components/LoginForm.tsx b/components/LoginForm.tsx index bf79178..fbb9a82 100644 --- a/components/LoginForm.tsx +++ b/components/LoginForm.tsx @@ -65,7 +65,9 @@ const LoginForm = () => { }); }; - return ( + return profile ? ( + + ) : (
diff --git a/components/ProfileDropdown.tsx b/components/ProfileDropdown.tsx index 8bd92e9..3a83af8 100644 --- a/components/ProfileDropdown.tsx +++ b/components/ProfileDropdown.tsx @@ -53,10 +53,10 @@ export default function ProfileDropdown() { onClick={async () => { const res = await ImaluumLogout(); if (res.success) { - sessionStorage.clear(); + localStorage.clear(); queryCache.clear(); toast.success("Logged out successfully."); - router.replace("/"); + router.push("/"); } }} > diff --git a/context/ImaluumProvider.tsx b/context/ImaluumProvider.tsx index 8cc1c6d..9073f0d 100644 --- a/context/ImaluumProvider.tsx +++ b/context/ImaluumProvider.tsx @@ -12,19 +12,21 @@ import Image from "next/image"; const ImaluumProvider = ({ children }: { children: React.ReactNode }) => { const { profile, setProfile } = useProfile(); - const { setResult } = useResult(); - const { setSchedule } = useSchedule(); + const { result, setResult } = useResult(); + const { schedule, setSchedule } = useSchedule(); const profileData = useQuery({ queryKey: ["profile"], queryFn: async () => { const data = await GetUserProfile(profile.matricNo as string); if (data.success) { - setProfile(data.data); + const password = profile.password; + setProfile({ ...data.data, password }); return data.data; } }, retry: 3, + enabled: !profile.imageURL, }); const resultData = useQuery({ @@ -37,6 +39,7 @@ const ImaluumProvider = ({ children }: { children: React.ReactNode }) => { } }, retry: 3, + enabled: !result, }); const scheduleData = useQuery({ @@ -49,11 +52,10 @@ const ImaluumProvider = ({ children }: { children: React.ReactNode }) => { } }, retry: 3, + enabled: !schedule, }); - return profileData.isSuccess && - resultData.isSuccess && - scheduleData.isSuccess ? ( + return profile && result && schedule ? ( <>{children} ) : (
diff --git a/middleware.ts b/middleware.ts deleted file mode 100644 index dce5c18..0000000 --- a/middleware.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { NextResponse } from "next/server"; -import type { NextRequest } from "next/server"; - -export async function middleware(req: NextRequest) { - const cookie = req.cookies.get("MOD_AUTH_CAS"); - - if (!cookie && req.nextUrl.pathname !== "/") { - return NextResponse.redirect(new URL("/", req.url)); - } - - if (cookie && req.nextUrl.pathname === "/") { - return NextResponse.redirect(new URL("/dashboard", req.url)); - } -} - -export const config = { - matcher: ["/((?!api|_next/static|_next/image|favicon.ico).*)"], -};