120 lines
3.9 KiB
JavaScript
120 lines
3.9 KiB
JavaScript
export function playNextPlaylistVideo() {
|
|
console.log('Playing next episode');
|
|
if (!document.getElementById("playlist_id")) {
|
|
console.log('No playlist specified');
|
|
return;
|
|
}
|
|
|
|
var playlistId = document.getElementById("playlist_id").value;
|
|
var nextEpisode = document.getElementById("playlist_next_episode_slug").value;
|
|
|
|
if (nextEpisode === ""){
|
|
return;
|
|
}
|
|
|
|
window.location.href = '/hentai/' + nextEpisode + '?playlist=' + playlistId;
|
|
}
|
|
|
|
function deleteEntry(playlistId, episodeId) {
|
|
window.axios.post('/user/playlist-episode', {
|
|
playlist: playlistId,
|
|
episode: episodeId
|
|
}).then(function (response) {
|
|
if (response.status == 200) {
|
|
console.log(response);
|
|
if (response.data.message == 'success') {
|
|
Swal.fire({
|
|
title: "Deleted!",
|
|
text: "Removed entry from playlist!",
|
|
icon: "success",
|
|
confirmButtonText: "OK",
|
|
willClose: () => {
|
|
location.reload();
|
|
}
|
|
}).then((result) => {
|
|
if (result.isConfirmed) {
|
|
location.reload();
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}).catch(function (error) {
|
|
Swal.fire({
|
|
title: "Error!",
|
|
text: error,
|
|
icon: "error"
|
|
});
|
|
console.log(error);
|
|
});
|
|
}
|
|
|
|
function addDesktopDeleteListener() {
|
|
const deleteButtons = document.querySelectorAll('[id^="delD"]');
|
|
|
|
deleteButtons.forEach(button => {
|
|
const playlist = button.id.split('-')[1];
|
|
const episode = button.id.split('-')[2];
|
|
console.log("Playlist: " + playlist + " Episode: " + episode);
|
|
|
|
button.addEventListener('click', () => deleteEntry(playlist, episode));
|
|
});
|
|
}
|
|
|
|
// Playlist Swipe (Delete)
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
const swipeContainers = document.querySelectorAll('.swipe-container');
|
|
|
|
var swipeOptions = {
|
|
dragLockToAxis: true,
|
|
dragBlockHorizontal: true
|
|
};
|
|
|
|
swipeContainers.forEach(container => {
|
|
const controls = new Hammer(container, swipeOptions);
|
|
const originalColor = container.style.backgroundColor;
|
|
const playlistId = container.id.split('-')[0];
|
|
const episodeId = container.id.split('-')[1];
|
|
const delIcon = document.getElementById('del-' + container.id);
|
|
|
|
// Set the initial position
|
|
let posX = 0;
|
|
|
|
// Listen for the pan gesture
|
|
controls.on('pan', (event) => {
|
|
// Update the X position based on the drag delta
|
|
posX = event.deltaX;
|
|
if (posX > 0) {
|
|
// Only allow left swipe
|
|
posX = 0;
|
|
}
|
|
|
|
// Apply the translation to the element
|
|
container.style.transform = `translateX(${posX}px)`;
|
|
container.style.backgroundColor = "rgba(159, 18, 18, 0.3)";
|
|
|
|
setTimeout(() => {
|
|
delIcon.classList.remove('fa-grip-lines-vertical');
|
|
delIcon.classList.add('fa-trash');
|
|
}, 300);
|
|
});
|
|
|
|
controls.on('panend', () => {
|
|
container.style.transition = 'transform 0.3s ease';
|
|
container.style.transform = 'translateX(0)';
|
|
setTimeout(() => {
|
|
container.style.transition = ''; // Reset transition for next drag
|
|
container.style.backgroundColor = originalColor;
|
|
delIcon.classList.remove('fa-trash');
|
|
delIcon.classList.add('fa-grip-lines-vertical');
|
|
}, 300);
|
|
});
|
|
|
|
controls.on('swipeleft', (event) => {
|
|
container.style.display = 'none';
|
|
console.log(playlistId, episodeId);
|
|
deleteEntry(playlistId, episodeId);
|
|
});
|
|
});
|
|
|
|
addDesktopDeleteListener();
|
|
}); |