|
|
|
@ -80,9 +80,11 @@ async function init() {
|
|
|
|
window.api.onFolderMonitorNewFiles((files) => {
|
|
|
|
window.api.onFolderMonitorNewFiles((files) => {
|
|
|
|
window.api.debugLog('folder-monitor: received ' + files.length + ' file(s)');
|
|
|
|
window.api.debugLog('folder-monitor: received ' + files.length + ' file(s)');
|
|
|
|
const fm = config.globalSettings && config.globalSettings.folderMonitor;
|
|
|
|
const fm = config.globalSettings && config.globalSettings.folderMonitor;
|
|
|
|
const hosters = getSelectedHosters();
|
|
|
|
const fmHosters = fm && Array.isArray(fm.hosters) && fm.hosters.length > 0 ? fm.hosters : [];
|
|
|
|
if (hosters.length > 0 && fm && fm.autoStart) {
|
|
|
|
|
|
|
|
// Add files directly to queue and start upload
|
|
|
|
if (fmHosters.length > 0) {
|
|
|
|
|
|
|
|
// Pre-selected hosters: set them as active selection and add directly to queue
|
|
|
|
|
|
|
|
selectedUploadHosters = fmHosters.slice();
|
|
|
|
const newFiles = [];
|
|
|
|
const newFiles = [];
|
|
|
|
for (const p of files) {
|
|
|
|
for (const p of files) {
|
|
|
|
if (!selectedFiles.find(f => f.path === p) && !_pendingFiles.find(f => f.path === p)) {
|
|
|
|
if (!selectedFiles.find(f => f.path === p) && !_pendingFiles.find(f => f.path === p)) {
|
|
|
|
@ -94,9 +96,10 @@ async function init() {
|
|
|
|
selectedFiles.push(...newFiles);
|
|
|
|
selectedFiles.push(...newFiles);
|
|
|
|
buildQueuePreview();
|
|
|
|
buildQueuePreview();
|
|
|
|
updateUploadView();
|
|
|
|
updateUploadView();
|
|
|
|
if (!uploading && !healthCheckRunning) startUpload();
|
|
|
|
if (fm.autoStart && !uploading && !healthCheckRunning) startUpload();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
|
|
|
|
// No pre-selected hosters: open modal
|
|
|
|
addPathsToQueue(files);
|
|
|
|
addPathsToQueue(files);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
@ -1784,7 +1787,7 @@ function renderSettings() {
|
|
|
|
<div class="hoster-panel-header" data-hoster="folderMonitor">
|
|
|
|
<div class="hoster-panel-header" data-hoster="folderMonitor">
|
|
|
|
<span class="panel-arrow">▶</span>
|
|
|
|
<span class="panel-arrow">▶</span>
|
|
|
|
<span class="panel-title">Ordnerüberwachung</span>
|
|
|
|
<span class="panel-title">Ordnerüberwachung</span>
|
|
|
|
<span class="panel-status" id="folderMonitorStatusBadge">${fm.enabled && fm.folderPath ? 'Aktiv' : 'Inaktiv'}</span>
|
|
|
|
<span class="panel-status${fm.enabled && fm.folderPath ? ' active' : ''}" id="folderMonitorStatusBadge">${fm.enabled && fm.folderPath ? 'Aktiv' : 'Inaktiv'}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="hoster-panel-body" data-panel="folderMonitor" style="display:none">
|
|
|
|
<div class="hoster-panel-body" data-panel="folderMonitor" style="display:none">
|
|
|
|
<div class="settings-section-label">Ordner</div>
|
|
|
|
<div class="settings-section-label">Ordner</div>
|
|
|
|
@ -1825,6 +1828,15 @@ function renderSettings() {
|
|
|
|
<input type="checkbox" class="settings-autosave" id="fmAutoStartInput" ${fm.autoStart !== false ? 'checked' : ''}>
|
|
|
|
<input type="checkbox" class="settings-autosave" id="fmAutoStartInput" ${fm.autoStart !== false ? 'checked' : ''}>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="settings-section-label">Hoster-Vorauswahl</div>
|
|
|
|
|
|
|
|
<div class="settings-grid-mini">
|
|
|
|
|
|
|
|
${configuredAccounts.map(({ name }) => `
|
|
|
|
|
|
|
|
<div class="settings-row checkbox-row">
|
|
|
|
|
|
|
|
<label>${escapeHtml(name)}</label>
|
|
|
|
|
|
|
|
<input type="checkbox" class="settings-autosave fm-hoster-checkbox" data-fm-hoster="${name}" ${(fm.hosters || []).includes(name) ? 'checked' : ''}>
|
|
|
|
|
|
|
|
</div>`).join('')}
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
${configuredAccounts.length === 0 ? '<p class="hint" style="margin:0">Erst Accounts anlegen, dann hier auswählen.</p>' : '<p class="hint" style="margin:2px 0 0">Keine Auswahl = Hoster-Modal bei jeder Datei.</p>'}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
`;
|
|
|
|
`;
|
|
|
|
container.appendChild(folderMonitorPanel);
|
|
|
|
container.appendChild(folderMonitorPanel);
|
|
|
|
@ -2023,7 +2035,8 @@ async function saveSettings(options = {}) {
|
|
|
|
extensions: (document.getElementById('fmExtensionsInput')?.value || '').trim(),
|
|
|
|
extensions: (document.getElementById('fmExtensionsInput')?.value || '').trim(),
|
|
|
|
skipDuplicates: !!document.getElementById('fmSkipDuplicatesInput')?.checked,
|
|
|
|
skipDuplicates: !!document.getElementById('fmSkipDuplicatesInput')?.checked,
|
|
|
|
delaySec: Math.max(1, parseInt(document.getElementById('fmDelaySecInput')?.value || '3', 10) || 3),
|
|
|
|
delaySec: Math.max(1, parseInt(document.getElementById('fmDelaySecInput')?.value || '3', 10) || 3),
|
|
|
|
autoStart: !!document.getElementById('fmAutoStartInput')?.checked
|
|
|
|
autoStart: !!document.getElementById('fmAutoStartInput')?.checked,
|
|
|
|
|
|
|
|
hosters: Array.from(document.querySelectorAll('.fm-hoster-checkbox:checked')).map(el => el.dataset.fmHoster)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|