diff options
| author | Miqdad <ahmadmiqdad27@gmail.com> | 2025-09-18 10:29:10 +0700 |
|---|---|---|
| committer | Miqdad <ahmadmiqdad27@gmail.com> | 2025-09-18 10:29:10 +0700 |
| commit | 856a9b97bf2c6840b01443b7efb1be6cea8e663e (patch) | |
| tree | 1a0f001de378aeebf0c044b27838daed654f9ae4 /app | |
| parent | fe7fb860fc332247e53d8d193fd4c10c09503704 (diff) | |
<Miqdad> fix hydration issue
Diffstat (limited to 'app')
| -rw-r--r-- | app/lib/camera/component/hedear.tsx | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/app/lib/camera/component/hedear.tsx b/app/lib/camera/component/hedear.tsx index 2a8bfc6..81f5d01 100644 --- a/app/lib/camera/component/hedear.tsx +++ b/app/lib/camera/component/hedear.tsx @@ -1,36 +1,53 @@ // components/Header.tsx +"use client"; + import Image from "next/image"; import { deleteAuth, getAuth } from "../../api/auth"; import { Button } from "@mui/material"; import { useRouter } from "next/navigation"; +import { useEffect, useState } from "react"; export default function Header() { - const auth = getAuth(); - const route = useRouter(); + const router = useRouter(); + const [mounted, setMounted] = useState(false); + const [auth, setAuth] = useState<any>(null); + + useEffect(() => { + setMounted(true); + try { + setAuth(getAuth()); + } catch { + setAuth(null); + } + }, []); - const handleSigOut = () => { + const handleSignOut = () => { deleteAuth(); - route.push('/login'); + router.push("/login"); }; + return ( <nav className="fixed top-0 left-0 w-full bg-white border-b-2 border-red-500 py-4 px-4 sm:px-96 z-50 shadow-md"> <div className="flex justify-between items-center"> <div className="flex items-center"> <Image - src="/images/indoteknik-logo.png" // Ganti dengan path logo Anda + src="/images/indoteknik-logo.png" alt="Logo" width={120} height={60} className="rounded-full" + priority /> </div> - {auth && ( - <div> - <Button size="small" onClick={() => handleSigOut()}> + <div> + {mounted && auth ? ( + <Button size="small" onClick={handleSignOut}> Logout </Button> - </div> - )} + ) : ( + <span className="inline-block h-8 w-16" aria-hidden /> + )} + </div> </div> </nav> ); |
