File size: 773 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 | import { useSocketContext } from '@/providers/socket-context'
import { useRoomStore } from '@/stores/roomStore'
import { EVENTS } from '@music-together/shared'
import type { Track } from '@music-together/shared'
import { useEffect } from 'react'
/** Keeps the local queue in sync with server-side QUEUE_UPDATED events. */
export function useQueueSync() {
const { socket } = useSocketContext()
useEffect(() => {
const onQueueUpdated = (data: { queue: Track[] }) => {
const room = useRoomStore.getState().room
if (room) {
useRoomStore.getState().updateRoom({ queue: data.queue })
}
}
socket.on(EVENTS.QUEUE_UPDATED, onQueueUpdated)
return () => {
socket.off(EVENTS.QUEUE_UPDATED, onQueueUpdated)
}
}, [socket])
}
|