import type { MouseEvent } from "react"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { useOpenModal } from "../../atoms/modal"; import { usePDS, usePDSHostname } from "../../atoms/pds"; import { cn } from "../../utils/cn"; type PDSButtonProps = { type: "request-crawl" | "logout" | "create-account"; iconClassName: string; children: string; }; function PDSButton({ type, iconClassName, children }: PDSButtonProps) { const openModal = useOpenModal(); return ( ); } function CreateInviteCodeButton() { const pds = usePDS(); const openModal = useOpenModal(); const [loading, setLoading] = useState(false); const { t } = useTranslation(); const handleCreateInviteCode = async (e: MouseEvent) => { e.stopPropagation(); setLoading(true); try { const code = await pds.createInviteCode(); openModal({ type: "invite-code", code }); } catch (error) { alert(t("pds-menu.alerts.error", { message: String(error) })); } finally { setLoading(false); } }; return (
{loading && (
)} {t("pds-menu.buttons.create-invite-code")}
); } export function PDSMenu() { const pdsHostname = usePDSHostname(); const { t } = useTranslation(); return (
PDS: {pdsHostname}
{t("pds-menu.buttons.create-account")} {t("pds-menu.buttons.request-crawl")} {t("pds-menu.buttons.sign-out")}
); }