diff options
Diffstat (limited to 'public/assets/js/lib/views/details/audio.js')
| -rw-r--r-- | public/assets/js/lib/views/details/audio.js | 40 |
1 files changed, 27 insertions, 13 deletions
diff --git a/public/assets/js/lib/views/details/audio.js b/public/assets/js/lib/views/details/audio.js index 2329886..1c2f6f0 100644 --- a/public/assets/js/lib/views/details/audio.js +++ b/public/assets/js/lib/views/details/audio.js @@ -20,23 +20,37 @@ const audio = (function () { audio.index(); audio.build(); if (music.length) { - audio.el.src = music[0]; + audio.el.src = music[0].href; } initted = true; }; - audio.index = function () { + audio.index = function (files) { music = []; current_index = -1; - var links = document.querySelectorAll("a"); - Array.prototype.slice.apply(links).forEach(function (link) { - if (!link.href.match(/\.(mp3|wav|aiff?|m4a|ogg|opus|flac)$/)) return; - link.dataset.index = music.length; - music.push(link); - if (playing && link.href === audio.el.src) { - current_index = parseInt(link.dataset.index); - } - }); + if (files) { + music = files + .filter((file) => AUDIO_REGEXP.test(file.filename)) + .map((file) => ({ + href: make_link(file), + title: file.filename.replace(AUDIO_REGEXP, ""), + })); + } else { + var links = document.querySelectorAll("a"); + Array.prototype.slice.apply(links).forEach(function (link) { + if (!link.href.match(/\.(mp3|wav|aiff?|m4a|ogg|opus|flac)$/)) return; + link.dataset.index = music.length; + music.push({ + el: link, + href: link.href, + title: link.innerText, + }); + if (playing && link.href === audio.el.src) { + current_index = parseInt(link.dataset.index); + } + }); + } + console.log(music); if (playing) { audio.set_cursor(); } @@ -99,8 +113,8 @@ const audio = (function () { audio.set_cursor = function () { selected = document.querySelector(".playing"); if (selected) selected.classList.remove("playing"); - if (current_index > -1) { - music[current_index].classList.add("playing"); + if (current_index > -1 && music[current_index].el) { + music[current_index].el.classList.add("playing"); } }; |
