"use client";

import Image from "next/image";
import Link from "@/app/components/LocaleLink";
import { useEffect, useState } from "react";
import { useRouter } from "next/navigation";
import toast from "react-hot-toast";

import ProfileAvatar from "@/app/components/ProfileAvatar";
import NotificationBell from "@/app/components/notifications/NotificationBell";
import { logout as logoutRequest, getProfile } from "@/app/lib/auth";
import { getAuthToken } from "@/app/lib/auth-token";
import { getWalletBalance } from "@/app/lib/wallet";
import { useLanguage } from "@/app/context/LanguageContext";

export default function Header() {
  const router = useRouter();
  const { locale, t, setLocale, availableLocales } = useLanguage();

  const [user, setUser] = useState<any>(null);
  const [walletBalance, setWalletBalance] = useState(0);
  const [consultationOpen, setConsultationOpen] = useState(false);
  const [horoscopeOpen, setHoroscopeOpen] = useState(false);
  const [freeServiceOpen, setFreeServiceOpen] = useState(false);
  const [panchangOpen, setPanchangOpen] = useState(false);
  const [tarotOpen, setTarotOpen] = useState(false);

  useEffect(() => {
    const loadUser = () => {
      const userData = localStorage.getItem("user");

      if (userData) {
        setUser(JSON.parse(userData));
      }
    };

    // The cached `user` object in localStorage is only a login-time
    // snapshot — it never reflects a balance change from a later
    // recharge or consultation, so the dropdown's "Wallet Transactions"
    // amount needs its own live fetch (same GET /user/profile +
    // getWalletBalance() the wallet page itself uses), not a read from
    // that snapshot.
    const loadWallet = async () => {
      const token = getAuthToken();
      if (!token) return;

      const response = await getProfile(token);
      if (response?.success !== false) {
        setWalletBalance(getWalletBalance(response?.user));
      }
    };

    loadUser();
    loadWallet();

    // Refresh when EditProfileModal saves a new photo, so the
    // header avatar updates without a full page reload. "wallet-updated"
    // is dispatched after a recharge completes or the wallet page loads
    // a fresh balance, so this dropdown figure doesn't go stale either.
    window.addEventListener("profile-updated", loadUser);
    window.addEventListener("wallet-updated", loadWallet);

    return () => {
      window.removeEventListener("profile-updated", loadUser);
      window.removeEventListener("wallet-updated", loadWallet);
    };
  }, []);

  const logout = () => {
    localStorage.removeItem("token");
    localStorage.removeItem("refresh_token");
    localStorage.removeItem("user");

    setUser(null);

    toast.success("Logged out successfully");

    router.push("/");
  };

  const handleLogoutOtherDevices = async () => {
    const token = localStorage.getItem("token");

    try {
      if (token) {
        await logoutRequest(token);
      }

      toast.success("Logged out from other devices");
    } catch {
      toast.error("Something went wrong, but you've been logged out here");
    } finally {
      localStorage.removeItem("token");
      localStorage.removeItem("refresh_token");
      localStorage.removeItem("user");

      setUser(null);

      router.push("/");
    }
  };

  return (
    <nav className="navbar navbar-expand-lg navbar-dark header-area fixed-top">
      <div className="container">
        <Link className="navbar-brand" href="/">
          <Image
            src="/images/logo-vertical.svg"
            alt="AstroEye"
            width={180}
            height={50}
            className="object-contain"
            priority
          />
        </Link>

        <button
          className="navbar-toggler"
          data-bs-toggle="collapse"
          data-bs-target="#menu"
        >
          <span className="navbar-toggler-icon"></span>
        </button>

        <div className="collapse navbar-collapse" id="menu">
          <ul className="navbar-nav mx-auto">
            <li
              className={`nav-item dropdown horoscope-dropdown ${
                consultationOpen ? "show" : ""
              }`}
            >
              <button
                type="button"
                className="nav-link dropdown-toggle bg-transparent border-0"
                onClick={() =>
                  setConsultationOpen(!consultationOpen)
                }
                aria-expanded={consultationOpen}
              >
                {t("nav.consultation")}
              </button>

              <ul
                className={`dropdown-menu ${
                  consultationOpen ? "show" : ""
                }`}
              >
                <li>
                  <Link
                    className="dropdown-item"
                    href="/chat-with-astrologer"
                    onClick={() =>
                      setConsultationOpen(false)
                    }
                  >
                    {t("nav.chatWithAstrologer")}
                  </Link>
                </li>

                <li>
                  <Link
                    className="dropdown-item"
                    href="/talk-to-astrologer"
                    onClick={() =>
                      setConsultationOpen(false)
                    }
                  >
                    {t("nav.talkToAstrologer")}
                  </Link>
                </li>
              </ul>
            </li>

            <li
              className={`nav-item dropdown horoscope-dropdown ${
                horoscopeOpen ? "show" : ""
              }`}
            >
              <button
                type="button"
                className="nav-link dropdown-toggle bg-transparent border-0"
                onClick={() =>
                  setHoroscopeOpen(!horoscopeOpen)
                }
                aria-expanded={horoscopeOpen}
              >
                {t("nav.horoscope")}
              </button>

              <ul
                className={`dropdown-menu ${
                  horoscopeOpen ? "show" : ""
                }`}
              >
                <li>
                  <Link
                    className="dropdown-item"
                    href="/horoscope/daily-horoscope"
                    onClick={() =>
                      setHoroscopeOpen(false)
                    }
                  >
                    {t("nav.dailyHoroscope")}
                  </Link>
                </li>

                <li>
                  <Link
                    className="dropdown-item"
                    href="/horoscope/tomorrow-horoscope"
                    onClick={() =>
                      setHoroscopeOpen(false)
                    }
                  >
                    {t("nav.tomorrowHoroscope")}
                  </Link>
                </li>

                {/* <li>
                  <Link
                    className="dropdown-item"
                    href="/horoscope/yesterday-horoscope"
                    onClick={() =>
                      setHoroscopeOpen(false)
                    }
                  >
                    Yesterday&apos;s Horoscope
                  </Link>
                </li> */}

                <li>
                  <Link
                    className="dropdown-item"
                    href="/horoscope/weekly-horoscope"
                    onClick={() =>
                      setHoroscopeOpen(false)
                    }
                  >
                    {t("nav.weeklyHoroscope")}
                  </Link>
                </li>

                {/* <li>
                  <Link
                    className="dropdown-item"
                    href="/horoscope/monthly-horoscope"
                    onClick={() =>
                      setHoroscopeOpen(false)
                    }
                  >
                    Monthly Horoscope
                  </Link>
                </li> */}

                <li>
                  <Link
                    className="dropdown-item"
                    href="/horoscope/yearly-horoscope"
                    onClick={() =>
                      setHoroscopeOpen(false)
                    }
                  >
                    {t("nav.yearlyHoroscope")}
                  </Link>
                </li>
              </ul>
            </li>

            <li
              className={`nav-item dropdown horoscope-dropdown ${
                freeServiceOpen ? "show" : ""
              }`}
            >
              <button
                type="button"
                className="nav-link dropdown-toggle bg-transparent border-0"
                onClick={() =>
                  setFreeServiceOpen(!freeServiceOpen)
                }
                aria-expanded={freeServiceOpen}
              >
                {t("nav.freeService")}
              </button>

              <ul
                className={`dropdown-menu ${
                  freeServiceOpen ? "show" : ""
                }`}
              >
                <li>
                  <Link
                    className="dropdown-item"
                    href="/free-kundli"
                    onClick={() =>
                      setFreeServiceOpen(false)
                    }
                  >
                    {t("nav.freeKundli")}
                  </Link>
                </li>

                <li>
                  <Link
                    className="dropdown-item"
                    href="/kundli-matching"
                    onClick={() =>
                      setFreeServiceOpen(false)
                    }
                  >
                    {t("nav.kundliMatching")}
                  </Link>
                </li>
                <li>
                  <Link
                    className="dropdown-item"
                    href="/tarot"
                    onClick={() =>
                      setTarotOpen(false)
                    }
                  >
                    {t("nav.tarot")}
                  </Link>
                </li>
              </ul>
            </li>
            <li
              className={`nav-item dropdown horoscope-dropdown ${
                panchangOpen ? "show" : ""
              }`}
            >
              <button
                type="button"
                className="nav-link dropdown-toggle bg-transparent border-0"
                onClick={() =>
                  setPanchangOpen(!panchangOpen)
                }
                aria-expanded={panchangOpen}
              >
                {t("nav.panchang")}
              </button>

              <ul
                className={`dropdown-menu ${
                  panchangOpen ? "show" : ""
                }`}
              >
                <li>
                  <Link
                    className="dropdown-item"
                    href="/panchang/today-panchang"
                    onClick={() =>
                      setPanchangOpen(false)
                    }
                  >
                    {t("nav.todayPanchang")}
                  </Link>
                </li>

                <li>
                  <Link
                    className="dropdown-item"
                    href="/panchang/tomorrow-panchang"
                    onClick={() =>
                      setPanchangOpen(false)
                    }
                  >
                    {t("nav.tomorrowPanchang")}
                  </Link>
                </li>

                <li>
                  <Link
                    className="dropdown-item"
                    href="/panchang/rahu-kaal"
                    onClick={() =>
                      setPanchangOpen(false)
                    }
                  >
                    {t("nav.rahuKaal")}
                  </Link>
                </li>

                <li>
                  <Link
                    className="dropdown-item"
                    href="/panchang/tithi"
                    onClick={() =>
                      setPanchangOpen(false)
                    }
                  >
                    {t("nav.tithi")}
                  </Link>
                </li>

                <li>
                  <Link
                    className="dropdown-item"
                    href="/panchang/choghadiya"
                    onClick={() =>
                      setPanchangOpen(false)
                    }
                  >
                    {t("nav.choghadiya")}
                  </Link>
                </li>

                <li>
                  <Link
                    className="dropdown-item"
                    href="/panchang/vaar"
                    onClick={() =>
                      setPanchangOpen(false)
                    }
                  >
                    {t("nav.vaar")}
                  </Link>
                </li>

                <li>
                  <Link
                    className="dropdown-item"
                    href="/panchang/hora"
                    onClick={() =>
                      setPanchangOpen(false)
                    }
                  >
                    {t("nav.hora")}
                  </Link>
                </li>
                {/* <li>
                  <Link
                    className="dropdown-item"
                    href="/numerology"
                    onClick={() =>
                      setPanchangOpen(false)
                    }
                  >
                    Numerology
                  </Link>
                </li> */}
              </ul>
            </li>

            {/* <li
              className={`nav-item dropdown horoscope-dropdown ${
                tarotOpen ? "show" : ""
              }`}
            >
              <button
                type="button"
                className="nav-link dropdown-toggle bg-transparent border-0"
                onClick={() =>
                  setTarotOpen(!tarotOpen)
                }
                aria-expanded={tarotOpen}
              >
                Tarot
              </button>

              <ul
                className={`dropdown-menu ${
                  tarotOpen ? "show" : ""
                }`}
              >
                <li>
                  <Link
                    className="dropdown-item"
                    href="/tarot"
                    onClick={() =>
                      setTarotOpen(false)
                    }
                  >
                    All Tarot Cards
                  </Link>
                </li>

                <li>
                  <Link
                    className="dropdown-item"
                    href="/tarot/one-card-reading"
                    onClick={() =>
                      setTarotOpen(false)
                    }
                  >
                    One Card Reading
                  </Link>
                </li>

                <li>
                  <Link
                    className="dropdown-item"
                    href="/tarot/three-card-reading"
                    onClick={() =>
                      setTarotOpen(false)
                    }
                  >
                    Three Card Reading
                  </Link>
                </li>

                <li>
                  <Link
                    className="dropdown-item"
                    href="/tarot/love-card-reading"
                    onClick={() =>
                      setTarotOpen(false)
                    }
                  >
                    Love Card Reading
                  </Link>
                </li>

                <li>
                  <Link
                    className="dropdown-item"
                    href="/tarot/yes-no-card-reading"
                    onClick={() =>
                      setTarotOpen(false)
                    }
                  >
                    Yes / No Card Reading
                  </Link>
                </li>
              </ul>
            </li> */}

            <li className="nav-item">
              <Link className="nav-link" href="/blogs">
                {t("nav.blogs")}
              </Link>
            </li>

            {/* <li className="nav-item">
              <Link className="nav-link" href="#">
                Shop
              </Link>
            </li> */}
          </ul>
          <div className="d-flex align-items-center gap-3">
            {user && (
              <NotificationBell
                audience="user"
                token={getAuthToken()}
                notificationsHref="/notifications"
                dark
              />
            )}
            {!user ? (
              
                <Link
                href={"/signin"}
                className="btn btn-warning rounded-pill px-4 fw-semibold"
              >
                {t("nav.signIn")}
              </Link>

              
              
            ) : (
              <div className="dropdown profile-dropdown">

                <button
                  className="btn border-0 p-0 bg-transparent"
                  data-bs-toggle="dropdown"
                >
                  <ProfileAvatar
                    user={user}
                    size={45}
                    className="rounded-circle border border-warning"
                  />
                </button>

                <div
                  className="dropdown-menu dropdown-menu-end shadow p-0 profile-dropdown-menu"
                >
                  <div className="text-center p-4">
                    <Link href={"/profile-settings"}>
                      <ProfileAvatar
                        user={user}
                        size={80}
                        className="rounded-circle mb-2"
                      />

                      <h5 className="mb-1">
                        {user.Name || user.name}
                      </h5>

                      <small className="text-muted">
                        {user.Email || user.email}
                      </small>
                    </Link>

                  </div>

                  <hr className="m-0" />

                  <Link
                    href="/notifications"
                    className="dropdown-item py-2"
                  >
                    Notification
                  </Link>

                  <Link
                    href="/wallet"
                    className="dropdown-item py-2 d-flex justify-content-between"
                  >
                    Wallet Transactions
                    <strong>₹{walletBalance.toLocaleString("en-IN")}</strong>
                  </Link>

                  {/* <Link
                    href="/dashboard/support"
                    className="dropdown-item py-2"
                  >
                    Customer Support Chat
                  </Link> */}

                  <button
                    className="dropdown-item py-2"
                    onClick={logout}
                  >
                    Logout
                  </button>

                  <button
                    className="dropdown-item py-2 text-danger"
                    onClick={handleLogoutOtherDevices}
                  >
                    Logout From Other Devices
                  </button>

                </div>

              </div>
            )}
            <div className="dropdown language-dropdown">
              <button
                type="button"
                className="icon-btn"
                data-bs-toggle="dropdown"
                aria-expanded="false"
                aria-label="Change language"
              >
                <svg
                  xmlns="http://www.w3.org/2000/svg"
                  width="1em"
                  height="1em"
                  viewBox="0 0 36 36"
                >
                  <path d="M0 0h36v36H0z" fill="none" />
                  <path
                    fill="currentColor"
                    d="m11 16.5l-1 3.1h2z"
                    className="clr-i-solid clr-i-solid-path-1"
                  />
                  <path
                    fill="currentColor"
                    d="M30.3 3h-16v5h4v2h-13c-1.7 0-3 1.3-3 3v11c0 1.7 1.3 3 3 3h1v5.1l6.3-5.1h6.7v-7h11c1.7 0 3-1.3 3-3V6c0-1.7-1.3-3-3-3M13.1 22.9l-.5-1.6H9.5l-.6 1.6H6.5L9.8 14h2.4l3.3 8.9zM28.3 15v2c-1.3 0-2.7-.4-3.9-1c-1.2.6-2.6.9-4 1l-.1-2q1.05 0 2.1-.3c-.9-.9-1.5-2-1.8-3.2h2.1c.3.9.9 1.6 1.6 2.2c1.1-.9 1.8-2.2 1.9-3.7h-6V8h3V6h2v2h3.3l.1 1c.1 2.1-.7 4.2-2.2 5.7c.7.2 1.3.3 1.9.3"
                    className="clr-i-solid clr-i-solid-path-2"
                  />
                  <path fill="none" d="M0 0h36v36H0z" />
                </svg>
              </button>

              <ul className="dropdown-menu dropdown-menu-end shadow">
                {availableLocales.map((option) => (
                  <li key={option.code}>
                    <button
                      type="button"
                      className={`dropdown-item ${
                        option.code === locale ? "active" : ""
                      }`}
                      onClick={() => setLocale(option.code)}
                    >
                      {option.label}
                    </button>
                  </li>
                ))}
              </ul>
            </div>
            </div>
        </div>
      </div>
    </nav>
  );
}
