This commit will bring:
- Gapless play! (Fix#739)
- Chunked queue shuffling - we play first track after first 50 queue items are shuffled, then we shuffle chunks of 50 queue items with each new animation frame.
- We can now restore original queue order after shuffling! (Part of #1506)
- Preloading whole tracks into LRU cache (Should fix#1812)
- Preloading multiple tracks at once
This commit provides following queue component enhancements:
- Use a virtual list to render queue items. We now render ~25-30 items at once compared to `queue.length` items. (Fix#1471)
- Faster queue opening and a smoother open animation. (Fix#1471)
- Faster song enqueueing: When enqueueing a playlist or an album, we modify the state only once compared to `tracks.length` modifications before.
- When opening the queue, current track is now already pre-scrolled and centered. This resolves an issue with big queues, where the track list was slowly scrolling to a random position.
- Dragging a track onto the edge of the track list will now scroll the container. You reorder a track from the very top to the very bottom even when you have 3000 tracks in the queue!
- Ability to use scroll wheel while reordering track items
- Track reordering on mobile devices! Currently dragging to edge is disabled
- Responsivity fixes
- Allow click outside modal (Fix#1581)
I've replaced `lodash` with `lodash-es`, so it can be tree-shaken
`~/modules` is a directory with application modules that run before app is mounted. Useful for configuration, web socket connection, and other stuff
`~/composables` is a directory with our custom composables. Much like `~/utils` but each util is in its own file
MediaSession pause requests may happen even when Funkwhale is already in a
paused state. Previously FW would flip between play/pause without
consideration for the current state instead of doing nothing when
the playback state matches the requested one.
Notably, this made Funkwhale resume audio playback when entering sleep mode
on my system.