feat: 拦截浏览器返回键,退出房间前弹窗确认

This commit is contained in:
2026-02-24 20:21:47 +08:00
parent a6fc523f4f
commit fc0a2a018b
3 changed files with 124 additions and 6 deletions
+3 -4
View File
@@ -1,7 +1,6 @@
"use client";
import { useState, useCallback } from "react";
import { useRouter } from "next/navigation";
import { Users, QrCode, LogOut } from "lucide-react";
import { motion, AnimatePresence } from "framer-motion";
import QrInviteModal from "./QrInviteModal";
@@ -9,10 +8,10 @@ import QrInviteModal from "./QrInviteModal";
interface TopNavProps {
roomId: string;
userCount: number;
onExit?: () => void;
}
export default function TopNav({ roomId, userCount }: TopNavProps) {
const router = useRouter();
export default function TopNav({ roomId, userCount, onExit }: TopNavProps) {
const [toast, setToast] = useState("");
const [showQr, setShowQr] = useState(false);
@@ -50,7 +49,7 @@ export default function TopNav({ roomId, userCount }: TopNavProps) {
<span className="font-semibold text-emerald-500">{userCount}</span>
</div>
<button
onClick={() => router.push("/")}
onClick={onExit}
className="ml-1 flex items-center justify-center rounded-full p-1 text-zinc-400 transition-colors active:bg-zinc-100 active:text-zinc-600"
aria-label="退出房间"
>