import { Check, Copy, RefreshCw } from "lucide-react"; import React from "react"; import { useOrigin } from "~/hooks/use-origin"; import { ModalType, useModalStore } from "~/stores/modal-store"; import { Button } from "../ui/button"; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from "../ui/dialog"; import { Input } from "../ui/input"; import { Label } from "../ui/label"; export default function CreateServerInviteModal() { const { type, data, isOpen, onClose } = useModalStore(); const [inviteCode, setInviteCode] = React.useState(undefined); const origin = useOrigin(); const [isCopied, setCopied] = React.useState(false); const isModalOpen = type === ModalType.CREATE_SERVER_INVITE && isOpen; const inviteLink = `${origin}/app/invite/${inviteCode}`; const onOpenChange = (openState: boolean) => { onClose(); }; const regenerateInviteCode = () => { import("~/lib/api/client/server") .then((m) => m.default.createInvite((data as { serverId: string }).serverId)) .then((invite) => { setInviteCode(invite.code); }); }; const onCopy = () => { navigator.clipboard.writeText(inviteLink); setCopied(true); setTimeout(() => setCopied(false), 1000); }; React.useEffect(() => { if (isModalOpen) { import("~/lib/api/client/server") .then((m) => m.default.createInvite((data as { serverId: string }).serverId)) .then((invite) => { setInviteCode(invite.code); }); } else { setInviteCode(undefined); } }, [isModalOpen]); return ( Invite your friends
); }