新增房间验证工具函数,包含房间代码格式验证和房间状态检查逻辑

This commit is contained in:
MatrixSeven
2026-03-01 00:08:29 +08:00
parent 84d7caea8c
commit 1a6a7369b9
25 changed files with 2697 additions and 1241 deletions

View File

@@ -1,20 +1,32 @@
import { create } from 'zustand';
interface WebRTCState {
export interface WebRTCState {
isConnected: boolean;
isConnecting: boolean;
isWebSocketConnected: boolean;
isPeerConnected: boolean;
error: string | null;
canRetry: boolean; // 新增:是否可以重试
canRetry: boolean;
currentRoom: { code: string; role: 'sender' | 'receiver' } | null;
}
/**
* WebRTC 状态管理器接口
* 供 ConnectionCore / DataChannelManager / TrackManager 作为参数使用
*/
export interface WebRTCStateManager {
getState: () => WebRTCState;
updateState: (updates: Partial<WebRTCState>) => void;
setCurrentRoom: (room: { code: string; role: 'sender' | 'receiver' } | null) => void;
resetToInitial: () => void;
isConnectedToRoom: (roomCode: string, role: 'sender' | 'receiver') => boolean;
}
interface WebRTCStore extends WebRTCState {
updateState: (updates: Partial<WebRTCState>) => void;
setCurrentRoom: (room: { code: string; role: 'sender' | 'receiver' } | null) => void;
reset: () => void;
resetToInitial: () => void; // 新增:完全重置到初始状态
resetToInitial: () => void;
}
const initialState: WebRTCState = {
@@ -23,7 +35,7 @@ const initialState: WebRTCState = {
isWebSocketConnected: false,
isPeerConnected: false,
error: null,
canRetry: false, // 初始状态下不需要重试
canRetry: false,
currentRoom: null,
};
@@ -42,5 +54,5 @@ export const useWebRTCStore = create<WebRTCStore>((set) => ({
reset: () => set(initialState),
resetToInitial: () => set(initialState), // 完全重置到初始状态
resetToInitial: () => set(initialState),
}));