diff --git a/frontend/src/views/Dashboard.vue b/frontend/src/views/Dashboard.vue
index dcd6036..481354f 100644
--- a/frontend/src/views/Dashboard.vue
+++ b/frontend/src/views/Dashboard.vue
@@ -37,7 +37,7 @@
mdi-alert-circle
-
{{ stats?.failed || 0 }}
+
{{ stats?.active_failed || 0 }}
Failed Downloads
@@ -354,7 +354,7 @@ const sourcesWithErrors = computed(() => {
return Array.from(sourceMap.values()).slice(0, 5)
})
-const failedCount = computed(() => stats.value?.failed || 0)
+const failedCount = computed(() => stats.value?.active_failed || 0)
const activeDownloadsCount = computed(() =>
(stats.value?.queued || 0) + (stats.value?.running || 0)
)
@@ -461,16 +461,16 @@ async function checkAllSources() {
checkingAll.value = true
try {
const enabledSources = sourcesStore.sources.filter(s => s.enabled)
- let queued = 0
- for (const source of enabledSources) {
- try {
- await sourcesStore.triggerCheck(source.id)
- queued++
- } catch (e) {
- console.error(`Failed to queue ${source.id}:`, e)
- }
+ const results = await Promise.allSettled(
+ enabledSources.map(source => sourcesStore.triggerCheck(source.id))
+ )
+ const queued = results.filter(r => r.status === 'fulfilled').length
+ const failed = results.filter(r => r.status === 'rejected').length
+ if (failed > 0) {
+ notifications.success(`Queued ${queued} sources (${failed} failed to queue)`)
+ } else {
+ notifications.success(`Queued checks for ${queued} sources`)
}
- notifications.success(`Queued checks for ${queued} sources`)
await fetchActiveDownloads()
await downloadsStore.fetchStats()
} catch (error) {
@@ -483,7 +483,7 @@ async function checkAllSources() {
async function retryAllFailed() {
retryingAll.value = true
try {
- const response = await downloadsStore.fetchDownloads({ status: 'failed', per_page: 100 })
+ const response = await downloadsStore.fetchDownloads({ status: 'failed', per_page: 100, exclude_superseded: true })
const failed = response.items
let retried = 0
for (const dl of failed) {