import { ref } from 'vue' import type { RoomMetaSnapshotInput, RoomMetaSnapshotState, } from './state' import { clearRoomMetaSnapshot, readRoomMetaSnapshot, saveRoomMetaSnapshot } from './storage' const roomMetaSnapshot = ref(readRoomMetaSnapshot()) function normalizeRoom(input: RoomMetaSnapshotInput): RoomMetaSnapshotState { return { roomId: input.roomId, roomName: input.roomName ?? '', gameType: input.gameType ?? 'chengdu', ownerId: input.ownerId ?? '', maxPlayers: input.maxPlayers ?? 4, playerCount: input.playerCount ?? input.players?.length ?? 0, status: input.status ?? 'waiting', createdAt: input.createdAt ?? '', updatedAt: input.updatedAt ?? '', players: input.players ?? [], myHand: input.myHand ?? [], game: input.game ?? { state: { wall: [], scores: {}, dealerIndex: -1, currentTurn: -1, phase: 'waiting', }, }, } } export function setRoomMetaSnapshot(input: RoomMetaSnapshotInput) { const next = normalizeRoom(input) roomMetaSnapshot.value = next saveRoomMetaSnapshot(next) } export function clearRoomMetaSnapshotState() { roomMetaSnapshot.value = null clearRoomMetaSnapshot() } export function useRoomMetaSnapshotState() { return roomMetaSnapshot }