Download packages/client/src/hooks/useQueue.ts from QSLY/ghp: direct link, hf CLI and curl.
- Browser
- Download file 1.68 kB
-
https://huggingface.co/spaces/QSLY/ghp/resolve/main/packages/client/src/hooks/useQueue.ts
- Command line
-
hf download hf://spaces/QSLY/ghp/packages/client/src/hooks/useQueue.ts
-
curl -L -o useQueue.ts https://huggingface.co/spaces/QSLY/ghp/resolve/main/packages/client/src/hooks/useQueue.ts
1.68 kB
| import { useCallback } from 'react' | |
| import { EVENTS, LIMITS, type BilibiliMetadataSource, type Track } from '@music-together/shared' | |
| import { useSocketContext } from '@/providers/socket-context' | |
| export function useQueue() { | |
| const { socket } = useSocketContext() | |
| const addTrack = useCallback((track: Track) => socket.emit(EVENTS.QUEUE_ADD, { track }), [socket]) | |
| const insertAfterCurrent = useCallback( | |
| (track: Track) => socket.emit(EVENTS.QUEUE_INSERT_AFTER_CURRENT, { track }), | |
| [socket], | |
| ) | |
| const addBatchTracks = useCallback( | |
| (tracks: Track[], playlistName?: string) => { | |
| for (let offset = 0; offset < tracks.length; offset += LIMITS.QUEUE_BATCH_MAX_SIZE) { | |
| socket.emit(EVENTS.QUEUE_ADD_BATCH, { | |
| tracks: tracks.slice(offset, offset + LIMITS.QUEUE_BATCH_MAX_SIZE), | |
| playlistName, | |
| }) | |
| } | |
| }, | |
| [socket], | |
| ) | |
| const removeTrack = useCallback((trackId: string) => socket.emit(EVENTS.QUEUE_REMOVE, { trackId }), [socket]) | |
| const reorderTracks = useCallback((trackIds: string[]) => socket.emit(EVENTS.QUEUE_REORDER, { trackIds }), [socket]) | |
| const updateBilibiliMetadata = useCallback( | |
| ( | |
| trackId: string, | |
| metadata: | |
| | { metadataSource: BilibiliMetadataSource; lyricId?: string; picId?: string; cover: string } | |
| | { clearMetadata: true }, | |
| ) => socket.emit(EVENTS.QUEUE_UPDATE_METADATA, { trackId, ...metadata }), | |
| [socket], | |
| ) | |
| const clearQueue = useCallback(() => socket.emit(EVENTS.QUEUE_CLEAR), [socket]) | |
| return { | |
| addTrack, | |
| insertAfterCurrent, | |
| addBatchTracks, | |
| removeTrack, | |
| reorderTracks, | |
| updateBilibiliMetadata, | |
| clearQueue, | |
| } | |
| } | |