"use client"; import { useState, useEffect, useRef } from "react"; import { account } from "../lib/appwrite"; import { useTheme } from "../context/ThemeContext"; const Navbar = () => { const { darkMode, toggleDarkMode } = useTheme(); const dropdownRef = useRef(null); const [isMenuOpen, setMenuOpen] = useState(false); const inputRef = useRef(null); const [dropdownOpen, setDropdownOpen] = useState(false); const [notifying, setNotifying] = useState(true); // assuming initial notifying state is true const [user, setUser] = useState(null); const [loading, setLoading] = useState(true); // ------fetch user----------------- useEffect(() => { const fetchUser = async () => { try { const userData = await account.get(); setUser(userData); } catch (error) { console.warn("User not logged in:", error.message); setUser(null); } finally { setLoading(false); } }; fetchUser(); }, []); const handleSignOut = async () => { try { await account.deleteSession('current'); // Redirect to login page or home page after sign out window.location.href = '/login'; // or your preferred redirect } catch (error) { console.error("Error signing out:", error); } }; // ----------------------------------------------------- const handleClick = (e) => { e.preventDefault(); setDropdownOpen(!dropdownOpen); setNotifying(false); } useEffect(() => { const handleKeyDown = (event) => { if ((event.metaKey || event.ctrlKey) && event.key === "k") { event.preventDefault(); inputRef.current?.focus(); } }; document.addEventListener("keydown", handleKeyDown); return () => document.removeEventListener("keydown", handleKeyDown); }, []); // ---------------------------------------------- const UserDropdown = () => { const [dropdownOpen, setDropdownOpen] = useState(false); const dropdownRef = useRef(null); // Close dropdown when clicking outside useEffect(() => { const handleClickOutside = (event) => { if (dropdownRef.current && !dropdownRef.current.contains(event.target)) { setDropdownOpen(false); } }; document.addEventListener("mousedown", handleClickOutside); return () => document.removeEventListener("mousedown", handleClickOutside); }, []); } return (
{/* Left side - Menu Button */}
{/* Center - Search */}
⌘K
{/* Right side - Icons and User */}
{/* --------------dropdown---------------- */}
{/* ----------Dropdown ------------------*/} {dropdownOpen && (
{user?.name || "Guest User"} {user?.email || "No email available"}
)}
{/* -------------------------------- */}
); }; export default Navbar;