import { RelayContext } from "@shared/relayProvider"; import { Tooltip } from "@shared/tooltip"; import CancelIcon from "@icons/cancel"; import HideIcon from "@icons/hide"; import { channelMessagesAtom } from "@stores/channel"; import { WRITEONLY_RELAYS } from "@stores/constants"; import { dateToUnix } from "@utils/date"; import { useActiveAccount } from "@utils/hooks/useActiveAccount"; import { Dialog, Transition } from "@headlessui/react"; import { useAtom } from "jotai"; import { getEventHash, getSignature } from "nostr-tools"; import { Fragment, useContext, useState } from "react"; export default function MessageHideButton({ id }: { id: string }) { const pool: any = useContext(RelayContext); const { account, isError, isLoading } = useActiveAccount(); const [isOpen, setIsOpen] = useState(false); const [messages, setMessages] = useAtom(channelMessagesAtom); const closeModal = () => { setIsOpen(false); }; const openModal = () => { setIsOpen(true); }; const hideMessage = () => { if (!isError && !isLoading && account) { const event: any = { content: "", created_at: dateToUnix(), kind: 43, pubkey: account.pubkey, tags: [["e", id]], }; event.id = getEventHash(event); event.sig = getSignature(event, account.privkey); // publish note pool.publish(event, WRITEONLY_RELAYS); // update local state const cloneMessages = [...messages]; const targetMessage = cloneMessages.findIndex( (message) => message.id === id, ); cloneMessages[targetMessage]["hide"] = true; setMessages(cloneMessages); // close modal closeModal(); } else { console.log("error"); } }; return ( <> Are you sure! This message will be hidden from your feed. Cancel hideMessage()} className="inline-flex h-9 items-center justify-center rounded-md bg-red-500 px-2 text-base font-medium text-white hover:bg-red-600" > Confirm > ); }