feat: Library bulk download + list virtualization for large channels
Add a source-wide "Select all" across all playlist groups, and make one click queue every indexed video (the previous 100-per-click cap is gone). Bulk download skips items that are already downloaded or in flight, so it can't enqueue duplicates, and it includes failed/canceled ones so it also retries them. Make the UI hold up at channel scale (1000s of videos): virtualize both the Downloads queue and the Library item list with @tanstack/react-virtual so only on-screen rows hit the DOM, memoize the queue row so they don't all reconcile on every progress tick, and batch the enqueue so queuing a whole channel stays O(n) instead of O(n^2). - VirtualList: reusable windowed list that owns its own scroll container - DownloadsView: virtualized, flex-filled queue - LibraryView: groups flattened to rows; virtualized panel above 100 rows, inline below so small sources are unchanged - QueueItem: React.memo - downloads store: addMany (one state update + one pump); sources: enqueue the whole selection via addMany, no cap Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
"@electron-toolkit/utils": "^4.0.0",
|
||||
"@fluentui/react-components": "^9.74.1",
|
||||
"@fluentui/react-icons": "^2.0.330",
|
||||
"@tanstack/react-virtual": "^3.14.3",
|
||||
"electron-store": "^11.0.2",
|
||||
"react": "^19.2.7",
|
||||
"react-dom": "^19.2.7",
|
||||
|
||||
Reference in New Issue
Block a user