mirror of
https://github.com/ArthurDanjou/artsite.git
synced 2026-01-14 13:54:05 +01:00
fix: supprimer le chargement paresseux des données dans le composant Stats et améliorer la gestion des requêtes API
This commit is contained in:
@@ -2,9 +2,7 @@
|
||||
import type { Stats } from '~~/types'
|
||||
import { usePrecision } from '@vueuse/math'
|
||||
|
||||
const { data: stats } = await useAsyncData<Stats>('stats', () => $fetch('/api/stats'), {
|
||||
lazy: true
|
||||
})
|
||||
const { data: stats } = await useAsyncData<Stats>('stats', () => $fetch('/api/stats'))
|
||||
|
||||
const startDate = computed(() => new Date(stats.value!.coding.range.start))
|
||||
const yearsCollected = useTimeAgo(startDate).value
|
||||
|
||||
@@ -1,42 +1,56 @@
|
||||
import type { H3Event } from 'h3'
|
||||
|
||||
const WAKATIME_HEADERS = {
|
||||
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
||||
'Accept': 'application/json'
|
||||
}
|
||||
|
||||
const fetchWakatime = async (url: string) => {
|
||||
try {
|
||||
return await $fetch<{ data: unknown[] }>(url, {
|
||||
headers: WAKATIME_HEADERS,
|
||||
timeout: 5000
|
||||
})
|
||||
}
|
||||
catch (err) {
|
||||
console.error(`[Wakatime Error] Failed to fetch ${url}`, err)
|
||||
return { data: [] }
|
||||
}
|
||||
}
|
||||
|
||||
const cachedWakatimeCoding = defineCachedFunction(async (event: H3Event) => {
|
||||
const config = useRuntimeConfig(event)
|
||||
|
||||
return await $fetch<{ data: unknown[] }>(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.coding}.json`)
|
||||
return await fetchWakatime(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.coding}.json`)
|
||||
}, {
|
||||
maxAge: 60,
|
||||
name: 'wakatime',
|
||||
maxAge: 60 * 50,
|
||||
name: 'wakatime:coding',
|
||||
getKey: () => 'coding'
|
||||
})
|
||||
|
||||
const cachedWakatimeEditors = defineCachedFunction(async (event: H3Event) => {
|
||||
const config = useRuntimeConfig(event)
|
||||
|
||||
return await $fetch<{ data: unknown[] }>(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.editors}.json`)
|
||||
return await fetchWakatime(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.editors}.json`)
|
||||
}, {
|
||||
maxAge: 60,
|
||||
name: 'wakatime',
|
||||
maxAge: 60 * 60,
|
||||
name: 'wakatime:editors',
|
||||
getKey: () => 'editors'
|
||||
})
|
||||
|
||||
const cachedWakatimeOs = defineCachedFunction(async (event: H3Event) => {
|
||||
const config = useRuntimeConfig(event)
|
||||
|
||||
return await $fetch<{ data: unknown[] }>(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.os}.json`)
|
||||
return await fetchWakatime(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.os}.json`)
|
||||
}, {
|
||||
maxAge: 60,
|
||||
name: 'wakatime',
|
||||
maxAge: 60 * 60,
|
||||
name: 'wakatime:os',
|
||||
getKey: () => 'os'
|
||||
})
|
||||
|
||||
const cachedWakatimeLanguages = defineCachedFunction(async (event: H3Event) => {
|
||||
const config = useRuntimeConfig(event)
|
||||
|
||||
return await $fetch<{ data: unknown[] }>(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.languages}.json`)
|
||||
return await fetchWakatime(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.languages}.json`)
|
||||
}, {
|
||||
maxAge: 60,
|
||||
name: 'wakatime',
|
||||
maxAge: 60 * 60,
|
||||
name: 'wakatime:languages',
|
||||
getKey: () => 'languages'
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user