/* eslint-disable @typescript-eslint/no-unused-vars */
/* eslint-disable @typescript-eslint/no-explicit-any */
import styles from "./news-card.module.scss";
import { FaArrowRightLong } from "react-icons/fa6";
import { useForm, usePage } from "@inertiajs/react";
import { BiSolidEdit } from "react-icons/bi";
import { MdDelete } from "react-icons/md";
import { FaBookOpen } from "react-icons/fa";
import DeleteConfirmationModal from "@/components/admin/Modals/DeleteConfirmationModal";
import ReadNewsModal from "@/components/admin/Modals/ReadNewsModal";
// import WriteAndUpdateMarketNewsModal from "@/components/admin/Modals/WriteAndUpdateMarketNewsModal";
import { useState, useEffect } from "react";

interface News {
  id: number | string;
  title: string;
  category: "forex" | "crypto" | "other" | string;
  intro: string;
  createdAt: string;
  [key: string]: any;
}

interface NewsCardProps {
  news: News;
}

const NewsCard = ({ news }: NewsCardProps) => {
  const { id, title, category, intro, createdAt } = news;
  const { url } = usePage(); // ✅ Correct way to access current page info

  const [isAdmin, setIsAdmin] = useState(false);
  const [deleteModal, setDeleteModal] = useState(false);
  const [updateNewsModal, setUpdateNewsModal] = useState(false);
  const [readNews, setReadNews] = useState(false);

  const form = useForm({});

  // ✅ Detect if current page is admin publication page
  useEffect(() => {
    setIsAdmin(url.startsWith("/admin/publications"));
  }, [url]);

  // --- Toggle modals ---
  const toggleReadNewsModal = () => setReadNews((prev) => !prev);
  const toggleUpdateNewsModal = () => setUpdateNewsModal((prev) => !prev);
  const toggleDeleteModal = () => setDeleteModal((prev) => !prev);

  // --- Handle navigation ---
  const handleClicked = (newsId: number | string) => {
    window.location.href = `/dashboard/news/${newsId}`;
  };

  // --- Handle delete publication ---
  const deletePublication = (publicationId: number | string) => {
    form.delete(`/publications/${publicationId}`);
    toggleDeleteModal();
  };

  return (
    <>
      {readNews && <ReadNewsModal news={news} closeModal={toggleReadNewsModal} />}

      {/* {updateNewsModal && (
        <WriteAndUpdateMarketNewsModal
          news={news}
          type="update"
          closeModal={toggleUpdateNewsModal}
          action={toggleUpdateNewsModal}
        />
      )} */}

      {deleteModal && (
        <DeleteConfirmationModal
          closeModal={toggleDeleteModal}
          handleDelete={() => deletePublication(id)}
          id={id}
          title="Delete Market News"
          description={`You are about to delete a market news with ID ${id}. This will no longer be available to your users. Please confirm before proceeding.`}
        />
      )}

      <div
        onClick={!isAdmin ? () => handleClicked(id) : undefined}
        className={styles["news__card"]}
      >
        <div className={styles["news__card__header"]}>
          <h1>{title}</h1>
          <small>Published on: {createdAt}</small>
        </div>

        <div className={styles["news__card__body"]}>
          <span className={styles["news__card__body--helper"]}>
            {category === "forex"
              ? "Forex Category"
              : category === "crypto"
              ? "Crypto Category"
              : "Other Category"}
          </span>

          <h3>{intro}</h3>

          {!isAdmin && (
            <h5>
              Read More &nbsp; <FaArrowRightLong />
            </h5>
          )}

          {isAdmin && (
            <div className={styles["news__card__body__buttons"]}>
              <div
                onClick={toggleReadNewsModal}
                className={styles["news__card__body__buttons--read"]}
              >
                Read &nbsp; <FaBookOpen />
              </div>
              <div
                onClick={toggleUpdateNewsModal}
                className={styles["news__card__body__buttons--edit"]}
              >
                Update &nbsp; <BiSolidEdit />
              </div>
              <div
                onClick={toggleDeleteModal}
                className={styles["news__card__body__buttons--delete"]}
              >
                Delete &nbsp; <MdDelete />
              </div>
            </div>
          )}
        </div>
      </div>
    </>
  );
};

export default NewsCard;
