File size: 1,127 Bytes
00a912e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | import type { RoomState } from '@music-together/shared'
import type { RoomData } from '../repositories/types.js'
/** 将内部 RoomData 转为客户端可见的 RoomState(不含密码明文) */
export function toPublicRoomState(data: RoomData): RoomState {
return {
id: data.id,
name: data.name,
creatorId: data.creatorId,
hostId: data.hostId,
temporaryAdminUserId: data.temporaryAdminUserId,
hasPassword: data.password !== null,
hidden: data.hidden,
permanent: data.permanent,
allowTemporaryAdminTrackRemoval: data.allowTemporaryAdminTrackRemoval,
allowTemporaryAdminQueueClear: data.allowTemporaryAdminQueueClear,
audioQuality: data.audioQuality,
users: data.users,
members: data.members,
queue: data.queue,
currentTrack: data.currentTrack,
playState: data.playState,
playMode: data.playMode,
}
}
/** 仅 owner 可见的完整房间状态(含密码明文,用于设置面板展示) */
export function toPublicRoomStateForOwner(data: RoomData): RoomState {
return {
...toPublicRoomState(data),
password: data.password ?? null,
}
}
|