diff --git a/src/classes/ClientConnection.ts b/src/classes/ClientConnection.ts index e0a636d..c7ee873 100644 --- a/src/classes/ClientConnection.ts +++ b/src/classes/ClientConnection.ts @@ -23,7 +23,7 @@ export class ClientConnection { roomData.participants.push({ id: this.socket.id, name, avatarURL }); } - const participants = roomData?.participants.map((p) => ({ ...p, isHost: roomData.hostId === p.id })) + const participants = roomData?.participants this.socket.emit('ready', { ...roomData, id: this.socket.id, @@ -60,7 +60,7 @@ export class ClientConnection { } room.participants = room.participants.filter((p) => p.id !== this.socket.id); - this.server.io.to(this.roomId).emit('syncParticipants', room.participants.map((p) => ({ ...p, hostId: room.hostId, isHost: room.hostId === p.id }))); + this.server.io.to(this.roomId).emit('syncParticipants', room.participants) }); } @@ -119,5 +119,13 @@ export class ClientConnection { if (room.hostId === this.socket.id) return; this.server.io.to(room.hostId).emit('requestSyncMedia', { requesterId: this.socket.id }); }); + + this.socket.on('promoteHost', (newHostId: string) => { + const room = this.server.roomData.get(this.roomId); + if (!room || room.hostId !== this.socket.id) return; + if (!room.participants.some((p) => p.id === newHostId)) return; + room.hostId = newHostId; + this.server.io.to(this.roomId).emit('newHost', { hostId: newHostId }); + }); } }