ghp / packages /client /src /hooks /room /useQueueSync.ts
QSLY's picture
deploy: build Hugging Face Space from source
00a912e
Raw
History Blame Contribute Delete
773 Bytes
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])
}