a simple web player for subsonic tinysub.devins.page
subsonic navidrome javascript
9
fork

Configure Feed

Select the types of activity you want to include in your feed.

refactor: extract to getQueueCallbacks

+22 -25
+3 -3
src/js/contextmenu.js
··· 218 218 state.queue, 219 219 selectedIndices, 220 220 state.queueIndex >= 0 ? state.queueIndex + 1 : 0, 221 - queueCallbacks, 221 + getQueueCallbacks(), 222 222 ); 223 223 }, 224 224 [STRINGS.CONTEXT_SORT]: () => { ··· 244 244 state.queue, 245 245 selectedIndices, 246 246 firstIdx - 1, 247 - queueCallbacks, 247 + getQueueCallbacks(), 248 248 ); 249 249 } 250 250 }, ··· 255 255 state.queue, 256 256 selectedIndices, 257 257 lastIdx + 2, 258 - queueCallbacks, 258 + getQueueCallbacks(), 259 259 ); 260 260 } 261 261 },
+7 -2
src/js/input.js
··· 129 129 state.queue, 130 130 selectedIndices, 131 131 firstIdx - 1, 132 - queueCallbacks, 132 + getQueueCallbacks(), 133 133 ); 134 134 } 135 135 refocusContext(true, false); ··· 137 137 moveDown: (selectedIndices) => { 138 138 const lastIdx = Math.max(...selectedIndices); 139 139 if (lastIdx < state.queue.length - 1) { 140 - moveQueueItems(state.queue, selectedIndices, lastIdx + 2, queueCallbacks); 140 + moveQueueItems( 141 + state.queue, 142 + selectedIndices, 143 + lastIdx + 2, 144 + getQueueCallbacks(), 145 + ); 141 146 } 142 147 refocusContext(true, false); 143 148 },
+1 -5
src/js/queue-drag.js
··· 82 82 state.queue, 83 83 queueSelection.getSelected(), 84 84 isDropBelowCenter(e, row) ? draggedIdx + 1 : draggedIdx, 85 - { 86 - onSelectionChange: (newIndices) => 87 - queueSelection?.setSelection(newIndices), 88 - onQueueChange: () => updateQueueDisplay(), 89 - }, 85 + getQueueCallbacks(), 90 86 ); 91 87 92 88 // refocus after DOM render cycle completes
+11 -15
src/js/queue.js
··· 133 133 } 134 134 } 135 135 136 + // get callbacks for queue movement operations 137 + function getQueueCallbacks() { 138 + return { 139 + onSelectionChange: (newIndices) => queueSelection?.setSelection(newIndices), 140 + onQueueChange: () => updateQueueDisplay(), 141 + }; 142 + } 143 + 136 144 // move items within queue 137 145 function moveQueueItems(queue, selectedIndices, insertPos, callbacks = {}) { 138 146 const { onSelectionChange, onQueueChange } = callbacks; ··· 474 482 // insert selected track after current track 475 483 [CLASSES.QUEUE_PLAY_NEXT]: (idx) => { 476 484 const insertPos = state.queueIndex >= 0 ? state.queueIndex + 1 : 0; 477 - moveQueueItems(state.queue, [idx], insertPos, { 478 - onSelectionChange: (newIndices) => 479 - queueSelection?.setSelection(newIndices), 480 - onQueueChange: () => updateQueueDisplay(), 481 - }); 485 + moveQueueItems(state.queue, [idx], insertPos, getQueueCallbacks()); 482 486 }, 483 487 // move up one position 484 488 [CLASSES.QUEUE_MOVE_UP]: (idx) => { 485 489 if (idx > 0) { 486 - moveQueueItems(state.queue, [idx], idx - 1, { 487 - onSelectionChange: (newIndices) => 488 - queueSelection?.setSelection(newIndices), 489 - onQueueChange: () => updateQueueDisplay(), 490 - }); 490 + moveQueueItems(state.queue, [idx], idx - 1, getQueueCallbacks()); 491 491 } 492 492 }, 493 493 // move down one position 494 494 [CLASSES.QUEUE_MOVE_DOWN]: (idx) => { 495 495 if (idx < state.queue.length - 1) { 496 - moveQueueItems(state.queue, [idx], idx + 2, { 497 - onSelectionChange: (newIndices) => 498 - queueSelection?.setSelection(newIndices), 499 - onQueueChange: () => updateQueueDisplay(), 500 - }); 496 + moveQueueItems(state.queue, [idx], idx + 2, getQueueCallbacks()); 501 497 } 502 498 }, 503 499 // clear from queue