mirror of
https://github.com/ArthurDanjou/artsite.git
synced 2026-01-14 15:54:13 +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 type { Stats } from '~~/types'
|
||||||
import { usePrecision } from '@vueuse/math'
|
import { usePrecision } from '@vueuse/math'
|
||||||
|
|
||||||
const { data: stats } = await useAsyncData<Stats>('stats', () => $fetch('/api/stats'), {
|
const { data: stats } = await useAsyncData<Stats>('stats', () => $fetch('/api/stats'))
|
||||||
lazy: true
|
|
||||||
})
|
|
||||||
|
|
||||||
const startDate = computed(() => new Date(stats.value!.coding.range.start))
|
const startDate = computed(() => new Date(stats.value!.coding.range.start))
|
||||||
const yearsCollected = useTimeAgo(startDate).value
|
const yearsCollected = useTimeAgo(startDate).value
|
||||||
|
|||||||
@@ -1,42 +1,56 @@
|
|||||||
import type { H3Event } from 'h3'
|
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 cachedWakatimeCoding = defineCachedFunction(async (event: H3Event) => {
|
||||||
const config = useRuntimeConfig(event)
|
const config = useRuntimeConfig(event)
|
||||||
|
return await fetchWakatime(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.coding}.json`)
|
||||||
return await $fetch<{ data: unknown[] }>(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.coding}.json`)
|
|
||||||
}, {
|
}, {
|
||||||
maxAge: 60,
|
maxAge: 60 * 50,
|
||||||
name: 'wakatime',
|
name: 'wakatime:coding',
|
||||||
getKey: () => 'coding'
|
getKey: () => 'coding'
|
||||||
})
|
})
|
||||||
|
|
||||||
const cachedWakatimeEditors = defineCachedFunction(async (event: H3Event) => {
|
const cachedWakatimeEditors = defineCachedFunction(async (event: H3Event) => {
|
||||||
const config = useRuntimeConfig(event)
|
const config = useRuntimeConfig(event)
|
||||||
|
return await fetchWakatime(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.editors}.json`)
|
||||||
return await $fetch<{ data: unknown[] }>(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.editors}.json`)
|
|
||||||
}, {
|
}, {
|
||||||
maxAge: 60,
|
maxAge: 60 * 60,
|
||||||
name: 'wakatime',
|
name: 'wakatime:editors',
|
||||||
getKey: () => 'editors'
|
getKey: () => 'editors'
|
||||||
})
|
})
|
||||||
|
|
||||||
const cachedWakatimeOs = defineCachedFunction(async (event: H3Event) => {
|
const cachedWakatimeOs = defineCachedFunction(async (event: H3Event) => {
|
||||||
const config = useRuntimeConfig(event)
|
const config = useRuntimeConfig(event)
|
||||||
|
return await fetchWakatime(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.os}.json`)
|
||||||
return await $fetch<{ data: unknown[] }>(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.os}.json`)
|
|
||||||
}, {
|
}, {
|
||||||
maxAge: 60,
|
maxAge: 60 * 60,
|
||||||
name: 'wakatime',
|
name: 'wakatime:os',
|
||||||
getKey: () => 'os'
|
getKey: () => 'os'
|
||||||
})
|
})
|
||||||
|
|
||||||
const cachedWakatimeLanguages = defineCachedFunction(async (event: H3Event) => {
|
const cachedWakatimeLanguages = defineCachedFunction(async (event: H3Event) => {
|
||||||
const config = useRuntimeConfig(event)
|
const config = useRuntimeConfig(event)
|
||||||
|
return await fetchWakatime(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.languages}.json`)
|
||||||
return await $fetch<{ data: unknown[] }>(`https://wakatime.com/share/${config.wakatime.userId}/${config.wakatime.languages}.json`)
|
|
||||||
}, {
|
}, {
|
||||||
maxAge: 60,
|
maxAge: 60 * 60,
|
||||||
name: 'wakatime',
|
name: 'wakatime:languages',
|
||||||
getKey: () => 'languages'
|
getKey: () => 'languages'
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user