Compare commits

..

No commits in common. "3c84679df1f367afe8525accdf79e13c835afccc" and "a1a3e87de83681d04b7aa756601e8bb55f90fab1" have entirely different histories.

5 changed files with 2 additions and 51 deletions

View File

@ -135,7 +135,6 @@ class UploadManager extends EventEmitter {
const { signal } = this.abortController;
const batchId = `batch-${Date.now()}`;
const results = new Map(); // filePath -> { name, size, results: [] }
this._batchResults = results;
for (const task of tasks) {
const fileName = path.basename(task.file);
@ -691,24 +690,6 @@ class UploadManager extends EventEmitter {
return next;
}
addJobs(tasks) {
if (!this.running || !tasks || tasks.length === 0) return;
const { signal } = this.abortController;
const results = this._batchResults || new Map();
for (const task of tasks) {
const fileName = path.basename(task.file);
if (!results.has(task.file)) {
let size = 0;
try { size = fs.statSync(task.file).size; } catch {}
results.set(task.file, { name: fileName, size, results: [] });
}
}
// Start each new job — they'll acquire semaphores and run
for (const task of tasks) {
this._runJob(task, results, signal);
}
}
cancelJobs(jobIds) {
for (const jobId of jobIds || []) {
if (!jobId) continue;

13
main.js
View File

@ -778,19 +778,6 @@ ipcMain.handle('cancel-selected-jobs', (_event, jobIds) => {
return true;
});
ipcMain.handle('add-jobs-to-batch', (_event, payload) => {
if (!uploadManager || !uploadManager.running) {
return { error: 'Kein Upload aktiv' };
}
const config = configStore.load();
const jobs = payload && Array.isArray(payload.jobs) ? payload.jobs : [];
const tasks = buildUploadTasksFromJobs(config, jobs);
if (tasks.length === 0) return { added: 0 };
uploadManager.addJobs(tasks);
debugLog(`add-jobs-to-batch: added ${tasks.length} tasks to running batch`);
return { added: tasks.length };
});
ipcMain.handle('finish-after-active', () => {
if (uploadManager) {
uploadManager.finishAfterActive();

View File

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

View File

@ -34,7 +34,6 @@ contextBridge.exposeInMainWorld('api', {
startUpload: (payload) => ipcRenderer.invoke('start-upload', payload),
cancelUpload: () => ipcRenderer.invoke('cancel-upload'),
cancelSelectedJobs: (jobIds) => ipcRenderer.invoke('cancel-selected-jobs', jobIds),
addJobsToBatch: (payload) => ipcRenderer.invoke('add-jobs-to-batch', payload),
finishAfterActive: () => ipcRenderer.invoke('finish-after-active'),
runHealthCheck: (payload) => ipcRenderer.invoke('run-health-check', payload),

View File

@ -1352,23 +1352,7 @@ function _markSkippedJobs(result) {
}
async function startSelectedUpload() {
if (uploading) {
// Batch already running — add selected jobs to the running batch
const retryable = queueJobs.filter(j => selectedJobIds.has(j.id) && ['queued', 'error', 'aborted', 'skipped'].includes(j.status));
if (retryable.length > 0) {
retryable.forEach(j => {
j.status = 'queued'; j.error = null; j.result = null;
j.bytesUploaded = 0; j.speedKbs = 0; j.progress = 0; j.uploadId = null;
});
renderQueueTable();
const result = await window.api.addJobsToBatch({
jobs: retryable.map(j => ({ id: j.id, file: j.file, fileName: j.fileName, hoster: j.hoster }))
});
_markSkippedJobs(result);
persistQueueStateSoon();
}
return;
}
if (uploading) return;
uploading = true; // set immediately to prevent double-click race
updateQueueActionButtons();