"use client"; import { useCallback } from "react"; import { QRCodeSVG } from "qrcode.react"; import { X, Copy, Share2, QrCode } from "lucide-react"; import type { SceneType } from "@/types"; import { getSceneConfig } from "@/lib/sceneConfig"; import Modal from "@/components/Modal"; import Button from "@/components/Button"; import { useShare } from "@/hooks/useShare"; interface QrInviteModalProps { open: boolean; onClose: () => void; roomId: string; scene?: SceneType; } export default function QrInviteModal({ open, onClose, roomId, scene = "eat", }: QrInviteModalProps) { const { share, copyToClipboard } = useShare(); const sceneConfig = getSceneConfig(scene); const inviteUrl = typeof window !== "undefined" ? `${window.location.origin}/invite/${roomId}` : ""; const handleCopy = useCallback( () => copyToClipboard(inviteUrl, "邀请链接已复制,快去发给朋友吧!"), [inviteUrl, copyToClipboard], ); const handleShare = useCallback( () => share({ title: sceneConfig.shareTitle, text: sceneConfig.shareText, url: inviteUrl }, handleCopy), [inviteUrl, sceneConfig, share, handleCopy], ); return (

邀请饭搭子

{sceneConfig.qrSubtitle}

房间号 {roomId}
); }