diff options
Diffstat (limited to 'web/js/app.js')
| -rw-r--r-- | web/js/app.js | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/web/js/app.js b/web/js/app.js index 13cc824..7c824e5 100644 --- a/web/js/app.js +++ b/web/js/app.js @@ -131,6 +131,7 @@ async function initApp() { playPause: () => togglePlay(), nextTrack: () => navigatePlayable(1), prevTrack: () => navigatePlayable(-1), + playRandom: () => playRandom(), mediaInfo: () => toggleMediaInfo(), fullscreen: () => toggleFullscreen(), toggleMinimize: () => toggleMinimize(), @@ -621,6 +622,20 @@ async function playSelected() { } } +async function playRandom() { + if (!state.media.length) return; + const idx = Math.floor(Math.random() * state.media.length); + const media = state.media[idx]; + if (!media) return; + try { + const detail = await API.mediaDetail(media.id); + const resumeFrom = detail?.progress?.position_seconds ?? 0; + selectAndPlay(media, idx, resumeFrom); + } catch { + selectAndPlay(media, idx, 0); + } +} + function visiblePlayableCards() { return Array.from(document.querySelectorAll('#media-grid .media-card[data-id], #media-grid .media-row[data-id]')); } |
