From 145de731335d758fbf47599e834788e76e1695d4 Mon Sep 17 00:00:00 2001 From: vikingowl Date: Sun, 4 May 2025 23:57:45 +0200 Subject: [PATCH] Add separate loading and error states for currently building Introduced `loadingCurrentlyBuilding` and `errorCurrentlyBuilding` states to manage the fetching of currently building packages independently. Updated the logic in `fetchCurrentlyBuilding` and related UI bindings to reflect this change, ensuring clearer state handling and improved error tracking. --- frontend/src/components/CurrentlyBuilding.vue | 4 +++- frontend/src/stores/packagesStore.ts | 13 +++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/CurrentlyBuilding.vue b/frontend/src/components/CurrentlyBuilding.vue index 022c01f..8482d0e 100644 --- a/frontend/src/components/CurrentlyBuilding.vue +++ b/frontend/src/components/CurrentlyBuilding.vue @@ -103,7 +103,9 @@ const rtf = new Intl.RelativeTimeFormat('en', { style: 'long' }) -const updateFailed = computed(() => !!packagesStore.state.error || !!statsStore.state.error) +const updateFailed = computed( + () => !!packagesStore.state.errorCurrentlyBuilding || !!statsStore.state.error +) const lastMirrorSync = computed( () => Math.floor(Date.now() / 1000) - (statsStore.state.stats?.last_mirror_timestamp || Date.now()) diff --git a/frontend/src/stores/packagesStore.ts b/frontend/src/stores/packagesStore.ts index 411b63f..157598c 100644 --- a/frontend/src/stores/packagesStore.ts +++ b/frontend/src/stores/packagesStore.ts @@ -17,7 +17,9 @@ export const usePackagesStore = defineStore('packages', () => { offset: 0, limit: Number(import.meta.env.VITE_LIMIT) || 50, loading: false, + loadingCurrentlyBuilding: false, error: null as string | null, + errorCurrentlyBuilding: null as string | null, lastUpdated: Date.now(), filters: { status: undefined, @@ -31,6 +33,8 @@ export const usePackagesStore = defineStore('packages', () => { const fetchPackages = (init = false) => { state.loading = true state.error = null + state.packages = [] + state.total = 0 if (init) { initFromUrl() @@ -76,10 +80,15 @@ export const usePackagesStore = defineStore('packages', () => { }) .finally(() => { state.loading = false + state.lastUpdated = Date.now() }) } const fetchCurrentlyBuilding = () => { + state.loadingCurrentlyBuilding = true + state.errorCurrentlyBuilding = null + state.currentlyBuildingPackages = [] + getPackages({ limit: 0, offset: 0, @@ -92,13 +101,13 @@ export const usePackagesStore = defineStore('packages', () => { if (err.statusCode === 404) { state.currentlyBuildingPackages = [] } else { - state.error = + state.errorCurrentlyBuilding = err instanceof Error ? err.message : 'Failed to fetch currently building packages' console.error('Error fetching queued packages:', err) } }) .finally(() => { - state.loading = false + state.loadingCurrentlyBuilding = false }) }