@@ -387,6 +387,15 @@ function applyDateRange<T extends Record<string, unknown>>(base: T): T & DateRan
387387 return next
388388}
389389
390+ const { fetchPackageDownloadEvolution } = useCharts ()
391+
392+ const evolution = shallowRef <EvolutionData >(props .weeklyDownloads ?? [])
393+ const evolutionsByPackage = shallowRef <Record <string , EvolutionData >>({})
394+ const pending = shallowRef (false )
395+
396+ const isMounted = shallowRef (false )
397+ let requestToken = 0
398+
390399watch (
391400 [selectedGranularity , startDate , endDate ],
392401 ([granularityValue ]) => {
@@ -396,18 +405,34 @@ watch(
396405 else if (granularityValue === ' monthly' )
397406 options .value = applyDateRange ({ granularity: ' month' , months: 24 })
398407 else options .value = applyDateRange ({ granularity: ' year' })
399- },
400- { immediate: true },
401- )
402408
403- const { fetchPackageDownloadEvolution } = useCharts ()
409+ // Do not set pending during initial setup
410+ if (! isMounted .value ) return
404411
405- const evolution = shallowRef <EvolutionData >(props .weeklyDownloads ?? [])
406- const evolutionsByPackage = shallowRef <Record <string , EvolutionData >>({})
407- const pending = shallowRef (false )
412+ const packageNames = effectivePackageNames .value
413+ if (! import .meta .client || ! shouldFetch .value || ! packageNames .length ) {
414+ pending .value = false
415+ return
416+ }
408417
409- const isMounted = shallowRef (false )
410- let requestToken = 0
418+ const o = options .value as any
419+ const hasExplicitRange = Boolean (o .startDate || o .endDate )
420+
421+ // Do not show loading when weeklyDownloads is already provided
422+ if (
423+ ! isMultiPackageMode .value &&
424+ o .granularity === ' week' &&
425+ props .weeklyDownloads ?.length &&
426+ ! hasExplicitRange
427+ ) {
428+ pending .value = false
429+ return
430+ }
431+
432+ pending .value = true
433+ },
434+ { immediate: true },
435+ )
411436
412437async function loadNow() {
413438 if (! import .meta .client ) return
0 commit comments