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,
  }
}