import { useRef, useState } from "react"; import { DotsThreeOutline } from "@phosphor-icons/react"; import showToast from "@/utils/toast"; import { useModal } from "@/hooks/useModal"; import ModalWrapper from "@/components/ModalWrapper"; import Embed from "@/models/embed"; import paths from "@/utils/paths"; import { nFormatter } from "@/utils/numbers"; import EditEmbedModal from "./EditEmbedModal"; import CodeSnippetModal from "./CodeSnippetModal"; import moment from "moment"; export default function EmbedRow({ embed }) { const rowRef = useRef(null); const [enabled, setEnabled] = useState(Number(embed.enabled) === 1); const { isOpen: isSettingsOpen, openModal: openSettingsModal, closeModal: closeSettingsModal, } = useModal(); const { isOpen: isSnippetOpen, openModal: openSnippetModal, closeModal: closeSnippetModal, } = useModal(); const handleSuspend = async () => { if ( !window.confirm( `Are you sure you want to disabled this embed?\nOnce disabled the embed will no longer respond to any chat requests.` ) ) return false; const { success, error } = await Embed.updateEmbed(embed.id, { enabled: !enabled, }); if (!success) showToast(error, "error", { clear: true }); if (success) { showToast( `Embed ${enabled ? "has been disabled" : "is active"}.`, "success", { clear: true } ); setEnabled(!enabled); } }; const handleDelete = async () => { if ( !window.confirm( `Are you sure you want to delete this embed?\nOnce deleted this embed will no longer respond to chats or be active.\n\nThis action is irreversible.` ) ) return false; const { success, error } = await Embed.deleteEmbed(embed.id); if (!success) showToast(error, "error", { clear: true }); if (success) { rowRef?.current?.remove(); showToast("Embed deleted from system.", "success", { clear: true }); } }; return ( <> {embed.workspace.name} {nFormatter(embed._count.embed_chats)} { // If the embed was created more than a day ago, show the date, otherwise show the time ago moment(embed.createdAt).diff(moment(), "days") > 0 ? moment(embed.createdAt).format("MMM D, YYYY") : moment(embed.createdAt).fromNow() } ); } function ActiveDomains({ domainList }) { if (!domainList) return

all

; try { const domains = JSON.parse(domainList); return (
{domains.map((domain, index) => { return (

{domain}

); })}
); } catch { return

all

; } }