const AssetGrid = document.getElementById('assets') const AssetObserver = new MutationObserver(async function (list) { const SelectedTab = document.getElementsByClassName('nav-link active')[0].getAttribute('data-category') if (SelectedTab === "audio") { for (const record of list) { for (const audio of record.addedNodes) { if (audio.tagName === 'DIV') { const PlayButton = document.createElement('button') PlayButton.classList = 'btn btn-primary btn-sm' PlayButton.style = 'position: absolute; bottom: 0; right: 0; margin: 5px; margin-bottom: 55px; z-index: 2000;' PlayButton.innerHTML = '' audio.getElementsByTagName('a')[0].parentElement.insertBefore(PlayButton, audio.getElementsByTagName('a')[0]) audio.children[0].style.position = 'relative' let AudioElement = null let Playing = false PlayButton.addEventListener('click', async function(){ if (!Playing) { if (AudioElement === null) { PlayButton.innerHTML = '
Loading...
' const AudioURL = (await (await fetch('https://api.polytoria.com/v1/assets/serve-audio/' + audio.querySelector('a[href^="/store"]').getAttribute('href').split('/')[2])).json()) if (AudioURL.success) { AudioElement = new Audio(AudioURL.url) } else { PlayButton.remove(); } AudioElement.addEventListener("canplaythrough", (event) => { Playing = true AudioElement.play(); PlayButton.innerHTML = '' PlayButton.classList = 'btn btn-warning btn-sm' }); } else { Playing = true AudioElement.play(); PlayButton.innerHTML = '' PlayButton.classList = 'btn btn-warning btn-sm' } AudioElement.addEventListener("ended", function() { Playing = false PlayButton.innerHTML = '' PlayButton.classList = 'btn btn-primary btn-sm' }) } else { Playing = false AudioElement.pause() PlayButton.innerHTML = '' PlayButton.classList = 'btn btn-primary btn-sm' } }) } } AssetObserver.observe(AssetGrid, {attributes: false, childList: true, subtree: false}); } } }); AssetObserver.observe(AssetGrid, {attributes: false, childList: true, subtree: false});