import useTranslation from "next-translate/useTranslation"

import { useAuthentication } from "../../../../../tools/authentication"
import { Emoji } from "../../../../Emoji"
import type { MessageProps } from "../Message"

interface MessageOptionsProps extends MessageProps {
  handleEdit: () => void
  editMode: ":white_check_mark:" | ":pencil2:"
}

export const MessageOptions: React.FC<
  React.PropsWithChildren<MessageOptionsProps>
> = ({ handleEdit, editMode, message }) => {
  const { t } = useTranslation()
  const { authentication } = useAuthentication()

  const handleDeleteMessage = async (): Promise<void> => {
    try {
      await authentication.api.delete(`/messages/${message.id}`)
    } catch {}
  }

  return (
    <div className="absolute -top-8 right-6 flex opacity-0 transition-opacity group-hover:opacity-100">
      {message.type === "text" && (
        <div
          className="message-options rounded-l-lg border-l-slate-600"
          title={t("application:edit")}
          onClick={handleEdit}
        >
          <Emoji value={editMode} size={18} />
        </div>
      )}
      <div
        className="message-options rounded-r-lg border-r-slate-600"
        title={t("application:delete")}
        onClick={handleDeleteMessage}
      >
        <Emoji value=":wastebasket:" size={18} />
      </div>
    </div>
  )
}
