import React, { useState, useEffect, useRef } from "react"; import "../scss/styles.scss"; import "../scss/components/_navbar.scss"; import { Link } from "react-router-dom"; const Navbar = () => { const [glitchEffect, setGlitchEffect] = useState(false); const [activeLink, setActiveLink] = useState("/"); const [user, setUser] = useState(null); const [menuOpen, setMenuOpen] = useState(false); const menuRef = useRef(null); async function handleLogout() { window.open("http://localhost:8080/auth/logout", "_self"); }; useEffect(() => { // Set active link based on current path setActiveLink(window.location.pathname); // Random glitch effect const glitchInterval = setInterval(() => { setGlitchEffect(true); setTimeout(() => setGlitchEffect(false), 200); }, 3000); // Close menu when clicking outside const handleClickOutside = (event) => { if ( menuRef.current && !menuRef.current.contains(event.target) && menuOpen ) { setMenuOpen(false); } }; document.addEventListener("mousedown", handleClickOutside); async function fetchUser() { const res = await fetch("http://localhost:8080/auth/current_user", { credentials: "include", // very important }); if (res.ok) { console.log("User response:", res); const user = await res.json(); //checking user response // console.log("User:", user); // console.log("User display name:", user.displayName); setUser(user); } else { setUser(null); } } fetchUser(); return () => { clearInterval(glitchInterval); document.removeEventListener("mousedown", handleClickOutside); }; }, []); const toggleMenu = () => { setMenuOpen(!menuOpen); }; return ( ); }; export default Navbar; //{user ? user.displayName : "NOTEBOOK"} //server side logout (was not working properly, so implemented client side logout) // const handleLogout = async () => { // try { // const res = await fetch("http://localhost:8080/auth/logout", { // method: "GET", // credentials: "include", // }); // if (res.ok) { // setUser(null); // } else { // console.error("Logout failed"); // } // } catch (error) { // console.error("Error during logout:", error); // }