🐛 fix: skip 0-byte files, fix drag-drop highlight flicker
- Upload manager now rejects empty files (0 bytes) with clear error message instead of sending useless uploads to the server - Fix drag-drop zone highlight flickering caused by dragleave firing on child elements (classic browser bug, fixed with enter/leave counter) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
0fb9d2f62b
commit
61e458b8ea
@ -223,6 +223,12 @@ class UploadManager extends EventEmitter {
|
||||
};
|
||||
|
||||
try {
|
||||
if (fileSize <= 0) {
|
||||
const error = 'Datei ist leer (0 Bytes)';
|
||||
emitFinalStatus('skipped', { error, attempt: 0 });
|
||||
recordFinalResult('error', { error });
|
||||
return;
|
||||
}
|
||||
if (settings.maxSizeMb > 0 && fileSize > settings.maxSizeMb * 1024 * 1024) {
|
||||
const error = `Datei zu groß (Max: ${settings.maxSizeMb} MB)`;
|
||||
emitFinalStatus('skipped', { error, attempt: 0 });
|
||||
|
||||
@ -485,10 +485,12 @@ function setupDragDrop() {
|
||||
const dropZone = document.getElementById('dropZone');
|
||||
// Allow drop on the entire upload view
|
||||
const uploadView = document.getElementById('upload-view');
|
||||
dropZone.addEventListener('dragover', (e) => { e.preventDefault(); e.stopPropagation(); dropZone.classList.add('drag-over'); });
|
||||
dropZone.addEventListener('dragleave', (e) => { e.preventDefault(); dropZone.classList.remove('drag-over'); });
|
||||
let _dragCounter = 0;
|
||||
dropZone.addEventListener('dragover', (e) => { e.preventDefault(); e.stopPropagation(); });
|
||||
dropZone.addEventListener('dragenter', (e) => { e.preventDefault(); _dragCounter++; dropZone.classList.add('drag-over'); });
|
||||
dropZone.addEventListener('dragleave', (e) => { e.preventDefault(); _dragCounter--; if (_dragCounter <= 0) { _dragCounter = 0; dropZone.classList.remove('drag-over'); } });
|
||||
dropZone.addEventListener('drop', (e) => {
|
||||
e.preventDefault(); e.stopPropagation(); dropZone.classList.remove('drag-over');
|
||||
e.preventDefault(); e.stopPropagation(); _dragCounter = 0; dropZone.classList.remove('drag-over');
|
||||
addDroppedFiles(e.dataTransfer.files).catch(console.error);
|
||||
});
|
||||
dropZone.addEventListener('click', () => pickFiles());
|
||||
|
||||
Loading…
Reference in New Issue
Block a user