Compare commits
2 Commits
c7343175ca
...
a1a3e87de8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a1a3e87de8 | ||
|
|
17fbb98c13 |
13
main.js
13
main.js
@ -661,9 +661,18 @@ ipcMain.handle('start-upload', (_event, payload) => {
|
|||||||
? buildUploadTasksFromJobs(config, jobs)
|
? buildUploadTasksFromJobs(config, jobs)
|
||||||
: buildUploadTasks(config, files, hosters);
|
: buildUploadTasks(config, files, hosters);
|
||||||
|
|
||||||
|
// Identify jobs that were skipped (no account/credentials)
|
||||||
|
const taskJobIds = new Set(tasks.map(t => t.jobId).filter(Boolean));
|
||||||
|
const skippedJobs = jobs.filter(j => j.id && !taskJobIds.has(j.id)).map(j => ({
|
||||||
|
jobId: j.id, hoster: j.hoster, reason: 'Kein gültiger Account für diesen Hoster'
|
||||||
|
}));
|
||||||
|
if (skippedJobs.length > 0) {
|
||||||
|
debugLog(` skipped ${skippedJobs.length} jobs: ${skippedJobs.map(s => s.hoster).join(', ')}`);
|
||||||
|
}
|
||||||
|
|
||||||
debugLog(` tasks built: ${tasks.length}`);
|
debugLog(` tasks built: ${tasks.length}`);
|
||||||
|
|
||||||
if (tasks.length === 0) return { error: 'Keine gültigen Zugangsdaten für die gewählten Hoster.' };
|
if (tasks.length === 0) return { error: 'Keine gültigen Zugangsdaten für die gewählten Hoster.', skippedJobs };
|
||||||
|
|
||||||
// Pass hoster settings to the upload manager
|
// Pass hoster settings to the upload manager
|
||||||
uploadManager = new UploadManager(config.hosterSettings || {}, config.globalSettings || {});
|
uploadManager = new UploadManager(config.hosterSettings || {}, config.globalSettings || {});
|
||||||
@ -752,7 +761,7 @@ ipcMain.handle('start-upload', (_event, payload) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
debugLog(`start-upload returning started=true (startBatch deferred to nextTick)`);
|
debugLog(`start-upload returning started=true (startBatch deferred to nextTick)`);
|
||||||
return { started: true, taskCount: tasks.length };
|
return { started: true, taskCount: tasks.length, skippedJobs };
|
||||||
});
|
});
|
||||||
|
|
||||||
ipcMain.handle('cancel-upload', () => {
|
ipcMain.handle('cancel-upload', () => {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "multi-hoster-uploader",
|
"name": "multi-hoster-uploader",
|
||||||
"version": "2.5.4",
|
"version": "2.5.5",
|
||||||
"description": "Upload files to doodstream, voe, vidmoly, byse simultaneously",
|
"description": "Upload files to doodstream, voe, vidmoly, byse simultaneously",
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@ -1322,6 +1322,7 @@ async function startUpload() {
|
|||||||
}))
|
}))
|
||||||
};
|
};
|
||||||
const result = await window.api.startUpload(uploadPayload);
|
const result = await window.api.startUpload(uploadPayload);
|
||||||
|
_markSkippedJobs(result);
|
||||||
persistQueueStateSoon();
|
persistQueueStateSoon();
|
||||||
|
|
||||||
if (result && result.error) {
|
if (result && result.error) {
|
||||||
@ -1338,6 +1339,18 @@ async function startUpload() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _markSkippedJobs(result) {
|
||||||
|
if (!result || !Array.isArray(result.skippedJobs) || result.skippedJobs.length === 0) return;
|
||||||
|
for (const skipped of result.skippedJobs) {
|
||||||
|
const job = _jobIndexById.get(skipped.jobId);
|
||||||
|
if (job) {
|
||||||
|
job.status = 'error';
|
||||||
|
job.error = skipped.reason || 'Kein gültiger Account';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
renderQueueTable();
|
||||||
|
}
|
||||||
|
|
||||||
async function startSelectedUpload() {
|
async function startSelectedUpload() {
|
||||||
if (uploading) return;
|
if (uploading) return;
|
||||||
uploading = true; // set immediately to prevent double-click race
|
uploading = true; // set immediately to prevent double-click race
|
||||||
@ -1373,6 +1386,7 @@ async function startSelectedUpload() {
|
|||||||
}))
|
}))
|
||||||
};
|
};
|
||||||
const result = await window.api.startUpload(uploadPayload);
|
const result = await window.api.startUpload(uploadPayload);
|
||||||
|
_markSkippedJobs(result);
|
||||||
persistQueueStateSoon();
|
persistQueueStateSoon();
|
||||||
|
|
||||||
if (result && result.error) {
|
if (result && result.error) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user