import { useConfirm } from "@/components/confirm/hooks/useConfirm";
import Tooltip from "@/components/Tooltip";
import { Button } from "@/components/ui/button";
import { useApp } from "@/context/app";
import { useGlobal } from "@/context/global";
import { ProjectStatusMap } from "@/models/projects/statusMap";
import { faTrashAlt } from "@fortawesome/free-regular-svg-icons";
import { faLink, faPaperPlane } from "@fortawesome/free-solid-svg-icons";
import Link from "next/link";
import { useParams } from "next/navigation";
import { Dispatch, SetStateAction } from "react";
import handleDeleteProject from "../../../../../handlers/handleDeleteProject";
import handleSendToPlatform from "../../../../../handlers/handleSendToPlatform";
import { NotesButton } from "./_buttons";

type SelectedProjectOptionsProps = {
  data?: any;
  setData?: Dispatch<SetStateAction<any>>;
  fetchData?: () => void;
};

export default function SelectedProjectOptions({
  data,
  setData,
  fetchData,
}: SelectedProjectOptionsProps) {
  const { activeSession } = useApp();
  const { permissions } = activeSession;

  const { dict } = useGlobal();
  const { confirm } = useConfirm();

  const params = useParams();

  const handleSendClick = async () => {
    const isConfirmed = await confirm();
    if (!isConfirmed) return;

    handleSendToPlatform({
      id: data.id,
      name: params.name as string,
      email: data.email,
      dict,
    });
  };

  const handleDeleteClick = async () => {
    const isConfirmed = await confirm();
    if (!isConfirmed) return;

    handleDeleteProject({
      name: params.name as string,
      dict,
    });
  };

  return (
    <div className="flex gap-1">
      {data?.status === ProjectStatusMap.PENDING && (
        <Tooltip content={dict.pages.general.confirm}>
          <Button
            variant="plain"
            color="success"
            size="xs"
            decorator={faPaperPlane}
            isIcon
            rounded
            onClick={handleSendClick}
          />
        </Tooltip>
      )}
      {data?.notes.length > 0 && <NotesButton data={data} setData={setData} />}
      <Tooltip content={dict.pages.general.open_link}>
        <Link href={`https://${params.name}.fedgovadv.info`} target="_blank">
          <Button
            variant="plain"
            color="primary"
            size="xs"
            isIcon
            rounded
            decorator={faLink}
          />
        </Link>
      </Tooltip>
      {permissions && permissions.canDeleteProject && (
        <Tooltip content={dict.pages.general.delete}>
          <Button
            variant="plain"
            color="danger"
            size="xs"
            decorator={faTrashAlt}
            isIcon
            rounded
            onClick={handleDeleteClick}
          />
        </Tooltip>
      )}
    </div>
  );
}
