Compare commits

...

2 Commits

Author SHA1 Message Date
Administrator
ad46c48c64 release: v2.6.4 2026-03-26 11:01:53 +01:00
Administrator
f288ced84b fix: allow global start to retry failed queue items 2026-03-26 11:00:46 +01:00
2 changed files with 14 additions and 6 deletions

View File

@ -1,6 +1,6 @@
{
"name": "multi-hoster-uploader",
"version": "2.6.3",
"version": "2.6.4",
"description": "Upload files to doodstream, voe, vidmoly, byse simultaneously",
"main": "main.js",
"scripts": {

View File

@ -621,7 +621,7 @@ function updateUploadView() {
function updateStartButton() {
const btn = document.getElementById('startUploadBtn');
const hosters = getSelectedHosters();
const hasFiles = queueJobs.some(j => j.status === 'queued' || j.status === 'preview');
const hasFiles = queueJobs.some(j => j.status === 'queued' || j.status === 'preview' || j.status === 'error');
btn.disabled = uploading || hosters.length === 0 || !hasFiles;
}
@ -631,7 +631,7 @@ function updateQueueActionButtons() {
const hasSelection = selectedJobIds.size > 0;
const hasUploadSelection = queueJobs.some((job) => selectedJobIds.has(job.id) && ['done', 'error', 'aborted', 'skipped'].includes(job.status));
const hasAbortSelection = queueJobs.some((job) => selectedJobIds.has(job.id) && ['preview', 'queued', 'getting-server', 'uploading', 'retrying'].includes(job.status));
const hasStartableSelection = queueJobs.some((job) => selectedJobIds.has(job.id) && ['preview', 'queued'].includes(job.status));
const hasStartableSelection = queueJobs.some((job) => selectedJobIds.has(job.id) && ['preview', 'queued', 'error'].includes(job.status));
const hasMovableSelection = hasSelection && !uploading;
const startSelectedBtn = document.getElementById('startSelectedBtn');
@ -1302,12 +1302,20 @@ async function startUpload() {
if (hosters.length === 0) { alert('Bitte mindestens einen Hoster auswählen.'); uploading = false; updateQueueActionButtons(); return; }
if (queueJobs.length === 0 && selectedFiles.length > 0) buildQueuePreview();
const jobsToStart = queueJobs.filter((job) => job.status === 'preview' || job.status === 'queued');
const jobsToStart = queueJobs.filter((job) => job.status === 'preview' || job.status === 'queued' || job.status === 'error');
if (jobsToStart.length === 0) { uploading = false; updateQueueActionButtons(); return; }
try {
queueJobs.forEach(j => {
if (j.status === 'preview') j.status = 'queued';
jobsToStart.forEach(j => {
j.status = 'queued';
j.error = null;
j.result = null;
j.bytesUploaded = 0;
j.speedKbs = 0;
j.elapsed = 0;
j.remaining = 0;
j.progress = 0;
j.uploadId = null;
});
updateQueueActionButtons();
renderQueueTable();