Files
file-transfer-go/chuan-next/src/hooks/useUrlHandler.ts
2025-08-02 16:46:20 +08:00

39 lines
1.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { useEffect } from 'react';
import { useSearchParams } from 'next/navigation';
interface UseUrlHandlerProps {
isConnected: boolean;
pickupCode: string;
setCurrentRole: (role: 'sender' | 'receiver') => void;
joinRoom: (code: string) => Promise<void>;
}
export const useUrlHandler = ({ isConnected, pickupCode, setCurrentRole, joinRoom }: UseUrlHandlerProps) => {
const searchParams = useSearchParams();
// 处理URL参数中的取件码仅在首次加载时
useEffect(() => {
const code = searchParams.get('code');
const type = searchParams.get('type');
const mode = searchParams.get('mode');
// 只有在完整的URL参数情况下才自动加入房间
// 1. 有效的6位取件码
// 2. 当前未连接
// 3. 不是已经连接的同一个房间码
// 4. 必须是完整的链接有type、mode=receive和code参数
// 5. 不是文字类型文字类型由TextTransfer组件处理
if (code &&
code.length === 6 &&
!isConnected &&
pickupCode !== code.toUpperCase() &&
type &&
type !== 'text' &&
mode === 'receive') {
console.log('自动加入文件房间:', code.toUpperCase());
setCurrentRole('receiver');
joinRoom(code.toUpperCase());
}
}, [searchParams]); // 只依赖 searchParams避免重复触发
};