mirror of
https://github.com/NNTmux/newznab-tmux.git
synced 2026-08-28 17:01:16 +00:00
Fix release deletion from admin releases list
This commit is contained in:
@@ -553,23 +553,6 @@ Alpine.data('regexDelete', () => ({
|
||||
}
|
||||
}));
|
||||
|
||||
// Release delete
|
||||
Alpine.data('releaseDelete', () => ({
|
||||
deleteRelease(e, id, deleteUrl) {
|
||||
e.preventDefault();
|
||||
const el = e.currentTarget;
|
||||
showConfirm({ title: 'Delete Release', message: 'Are you sure you want to delete this release? This action cannot be undone.', type: 'danger', confirmText: 'Delete', onConfirm: function() {
|
||||
const csrf = document.querySelector('meta[name="csrf-token"]')?.content;
|
||||
showToast('Deleting release...', 'info');
|
||||
fetch(deleteUrl, { method: 'POST', headers: { 'X-Requested-With': 'XMLHttpRequest', 'X-CSRF-TOKEN': csrf, 'Content-Type': 'application/json', 'Accept': 'application/json' } })
|
||||
.then(r => {
|
||||
if (r.ok) { const row = el.closest('tr'); if (row) { row.style.transition = 'opacity 0.3s'; row.style.opacity = '0'; setTimeout(() => row.remove(), 300); } showToast('Release deleted successfully', 'success'); }
|
||||
else showToast('Error deleting release: ' + r.status, 'error');
|
||||
}).catch(err => showToast('Error deleting release: ' + err.message, 'error'));
|
||||
}});
|
||||
}
|
||||
}));
|
||||
|
||||
// My Movies confirm
|
||||
Alpine.data('myMovies', () => ({
|
||||
confirmRemove(e) {
|
||||
@@ -741,23 +724,6 @@ Alpine.data('myMovies', () => ({
|
||||
return;
|
||||
}
|
||||
|
||||
// Release delete
|
||||
var relDel = e.target.closest('[data-delete-release]');
|
||||
if (relDel) {
|
||||
e.preventDefault();
|
||||
var deleteUrl = relDel.getAttribute('data-delete-url');
|
||||
showConfirm({ title: 'Delete Release', message: 'Are you sure? This cannot be undone.', type: 'danger', confirmText: 'Delete',
|
||||
onConfirm: function() {
|
||||
var csrf = document.querySelector('meta[name="csrf-token"]')?.content;
|
||||
showToast('Deleting...', 'info');
|
||||
fetch(deleteUrl, { method: 'POST', headers: { 'X-Requested-With': 'XMLHttpRequest', 'X-CSRF-TOKEN': csrf, 'Content-Type': 'application/json', 'Accept': 'application/json' } })
|
||||
.then(function(r) { if (r.ok) { var row = relDel.closest('tr'); if (row) { row.style.transition='opacity 0.3s'; row.style.opacity='0'; setTimeout(function() { row.remove(); },300); } showToast('Deleted', 'success'); } else showToast('Error: ' + r.status, 'error'); })
|
||||
.catch(function(err) { showToast('Error: ' + err.message, 'error'); });
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Binary blacklist delete
|
||||
var blDel = e.target.closest('[data-delete-blacklist]');
|
||||
if (blDel) {
|
||||
|
||||
@@ -63,6 +63,83 @@ Alpine.data('adminReleaseList', () => ({
|
||||
}
|
||||
},
|
||||
|
||||
showToast(message, type) {
|
||||
Alpine.store('toast').show(message, type);
|
||||
},
|
||||
|
||||
deleteRelease(e) {
|
||||
e.preventDefault();
|
||||
|
||||
const button = e.currentTarget;
|
||||
const deleteUrl = button.dataset.deleteUrl;
|
||||
|
||||
if (!deleteUrl) {
|
||||
this.showToast('Release delete URL is missing.', 'error');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
this.showModal({
|
||||
title: 'Delete Release',
|
||||
message: 'Are you sure you want to delete this release?',
|
||||
details: 'This action cannot be undone.',
|
||||
type: 'danger',
|
||||
confirmText: 'Delete',
|
||||
cancelText: 'Cancel',
|
||||
onConfirm: () => this.submitReleaseDelete(button, deleteUrl),
|
||||
});
|
||||
},
|
||||
|
||||
submitReleaseDelete(button, deleteUrl) {
|
||||
const csrf = document.querySelector('meta[name="csrf-token"]')?.content;
|
||||
|
||||
if (!csrf) {
|
||||
this.showToast('Unable to delete release: CSRF token is missing.', 'error');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
button.disabled = true;
|
||||
button.setAttribute('aria-busy', 'true');
|
||||
this.showToast('Deleting release...', 'info');
|
||||
|
||||
fetch(deleteUrl, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'X-Requested-With': 'XMLHttpRequest',
|
||||
'X-CSRF-TOKEN': csrf,
|
||||
'Accept': 'application/json',
|
||||
},
|
||||
})
|
||||
.then(response => response.json().catch(() => ({})).then(data => ({ response, data })))
|
||||
.then(({ response, data }) => {
|
||||
if (!response.ok || data.success === false) {
|
||||
throw new Error(data.message || 'Error deleting release: ' + response.status);
|
||||
}
|
||||
|
||||
const row = button.closest('tr');
|
||||
if (row) {
|
||||
row.style.transition = 'opacity 0.3s';
|
||||
row.style.opacity = '0';
|
||||
setTimeout(() => {
|
||||
row.remove();
|
||||
this.syncSelectionState();
|
||||
}, 300);
|
||||
} else {
|
||||
this.syncSelectionState();
|
||||
}
|
||||
|
||||
this.showToast(data.message || 'Release deleted successfully', 'success');
|
||||
})
|
||||
.catch(error => {
|
||||
button.disabled = false;
|
||||
this.showToast(error.message || 'Error deleting release.', 'error');
|
||||
})
|
||||
.finally(() => {
|
||||
button.removeAttribute('aria-busy');
|
||||
});
|
||||
},
|
||||
|
||||
validateBulkAction(e) {
|
||||
e.preventDefault();
|
||||
|
||||
@@ -99,7 +176,6 @@ Alpine.data('adminReleaseList', () => ({
|
||||
return;
|
||||
}
|
||||
|
||||
const self = this;
|
||||
this.showModal({
|
||||
title: 'Change category',
|
||||
message: 'Change category for ' + checkedCount + ' release(s)?',
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@extends('layouts.admin')
|
||||
|
||||
@section('content')
|
||||
<div class="space-y-6">
|
||||
<div x-data="adminReleaseList" class="space-y-6">
|
||||
<div class="bg-white dark:bg-gray-800 rounded-xl shadow-sm">
|
||||
<!-- Header -->
|
||||
<div class="px-6 py-4 border-b border-gray-200 dark:border-gray-700">
|
||||
@@ -145,6 +145,7 @@
|
||||
@endif
|
||||
<button type="button"
|
||||
class="text-red-600 dark:text-red-400 hover:text-red-900 dark:hover:text-red-300"
|
||||
@click="deleteRelease($event)"
|
||||
data-delete-release="{{ $release->guid }}"
|
||||
data-delete-url="{{ url('/admin/release-delete/' . $release->guid) }}"
|
||||
title="Delete release">
|
||||
|
||||
@@ -158,6 +158,7 @@
|
||||
</a>
|
||||
<button type="button"
|
||||
class="text-red-600 dark:text-red-400 hover:text-red-900 dark:hover:text-red-300"
|
||||
@click="deleteRelease($event)"
|
||||
data-delete-release="{{ $release->guid }}"
|
||||
data-delete-url="{{ url('admin/release-delete/' . $release->guid) }}"
|
||||
title="Delete">
|
||||
|
||||
Reference in New Issue
Block a user