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});