import { Tooltip, Button as BaseButton } from "@nextui-org/react";
import { useState } from "react";
import { FaFacebook, FaLinkedin, FaWhatsapp, FaLink } from "react-icons/fa";
import { FaXTwitter } from "react-icons/fa6";

type ShareOppSocialMediaProps = {
  onClick: (socialId: string) => void;
};

function ShareOppSocialMedia({ onClick }: ShareOppSocialMediaProps) {
  const socialMediaIcons = [
    "twitter",
    "facebook",
    "linkedin",
    "whatsapp",
    "link",
  ];

  const [copied, setCopied] = useState(false);

  const handleLinkCopy = () => {
    const baseUrl = process.env.NEXT_PUBLIC_PFR_WEBSITE_BASE_URL;
    const currentPath = window.location.pathname;
    const fullUrl = `${baseUrl}${currentPath}`;

    navigator.clipboard.writeText(fullUrl).then(() => {
      setCopied(true);
      setTimeout(() => setCopied(false), 2000); // resets after 2 seconds.
    });
  };

  return (
    <div className="flex flex-row">
      {socialMediaIcons.map((socialId) => (
        <Tooltip
          key={socialId}
          classNames={{ content: "text-xs shadow-none border border-1 p-2" }}
          content={
            socialId === "link"
              ? copied
                ? "Opportunity link copied successfully."
                : "Copy opportunity link"
              : `Share opportunity on ${
                  socialId.charAt(0).toUpperCase() + socialId.slice(1)
                }`
          }
        >
          <BaseButton
            isIconOnly
            aria-label={
              socialId === "link"
                ? "Copy opportunity link"
                : `Share opportunity on ${
                    socialId.charAt(0).toUpperCase() + socialId.slice(1)
                  }`
            }
            variant="light"
            onPress={() =>
              socialId === "link" ? handleLinkCopy() : onClick(socialId)
            }
          >
            {(() => {
              const classes =
                "text-participant-bittersweet-400 dark:text-participant-fountain-600 size-4";

              switch (socialId) {
                case "twitter":
                  return <FaXTwitter className={classes} />;
                case "facebook":
                  return <FaFacebook className={classes} />;
                case "linkedin":
                  return <FaLinkedin className={classes} />;
                case "whatsapp":
                  return <FaWhatsapp className={classes} />;
                case "link":
                  return <FaLink className={classes} />;
              }
            })()}
          </BaseButton>
        </Tooltip>
      ))}
    </div>
  );
}

export default ShareOppSocialMedia;
