diff --git a/src/views/LibraryView.vue b/src/views/LibraryView.vue index 60849be..6ee326e 100644 --- a/src/views/LibraryView.vue +++ b/src/views/LibraryView.vue @@ -1893,12 +1893,13 @@ async function batchDeepScan() { const immediateCount = Math.min(filesToProcess.length, maxConcurrent) const queueTotal = Math.max(0, filesToProcess.length - maxConcurrent) - actionMsg.value = `Starting: ${immediateCount} immediate, ${queueTotal} queuing...` - + let processing = 0 let successCount = 0 let failCount = 0 - const tasks = filesToProcess.map((f, index) => { + actionMsg.value = `Starting: ${immediateCount} immediate, ${queueTotal} queuing...` + + const tasks = filesToProcess.map((f) => { return limit(async () => { const fileUuid = f.file_uuid if (!fileUuid) { @@ -1906,19 +1907,20 @@ async function batchDeepScan() { return } - const position = index + 1 - const queuePosition = position - maxConcurrent + processing++ + const queueCount = Math.max(0, filesToProcess.length - successCount - failCount - processing) - if (queuePosition > 0) { - actionMsg.value = `Processing ${successCount + 1}/${filesToProcess.length} (${queuePosition} queuing)...` + if (queueCount > 0) { + actionMsg.value = `Processing ${successCount + 1}/${filesToProcess.length} (${queueCount} queuing)...` } else { - actionMsg.value = `Processing ${position}/${filesToProcess.length}...` + actionMsg.value = `Processing ${successCount + 1}/${filesToProcess.length}...` } try { const file = filesCache.value.find((x: any) => x.file_uuid === fileUuid) if (!file) { failCount++ + processing-- return } @@ -1940,6 +1942,8 @@ async function batchDeepScan() { } catch (e: any) { failCount++ console.error('[batchDeepScan] Failed:', f.file_name, e) + } finally { + processing-- } }) })