mirror of
https://github.com/EasyTier/easytier.github.io.git
synced 2026-10-19 16:16:34 +00:00
- consolidate Dependabot updates for @antfu/eslint-config, eslint, and mermaid - adjust ESLint config and formatting for @antfu/eslint-config v9 - allow approved pnpm dependency build scripts for noninteractive installs
41 lines
1.4 KiB
TypeScript
41 lines
1.4 KiB
TypeScript
import { onMounted, ref } from 'vue'
|
|
|
|
export function useLatestVersion() {
|
|
const latestVersion = ref<string | null>(null)
|
|
const prereleaseVersion = ref<string | null>(null)
|
|
const loading = ref(true)
|
|
const error = ref<string | null>(null)
|
|
|
|
onMounted(async () => {
|
|
try {
|
|
const [latestRes, releasesRes] = await Promise.all([
|
|
fetch('https://api.github.com/repos/EasyTier/EasyTier/releases/latest'),
|
|
fetch('https://api.github.com/repos/EasyTier/EasyTier/releases?per_page=5'),
|
|
])
|
|
|
|
if (!latestRes.ok || !releasesRes.ok) {
|
|
throw new Error('Failed to fetch releases from GitHub API')
|
|
}
|
|
|
|
const latestData = await latestRes.json() as { tag_name?: string }
|
|
const releases = await releasesRes.json() as Array<{ tag_name?: string, prerelease?: boolean }>
|
|
|
|
latestVersion.value = latestData.tag_name ?? null
|
|
prereleaseVersion.value = releases.find(item => item.prerelease)?.tag_name ?? null
|
|
}
|
|
catch (err) {
|
|
error.value = err instanceof Error ? err.message : 'Unknown error'
|
|
}
|
|
finally {
|
|
loading.value = false
|
|
}
|
|
|
|
if (latestVersion.value?.startsWith('v'))
|
|
latestVersion.value = latestVersion.value.slice(1)
|
|
if (prereleaseVersion.value?.startsWith('v'))
|
|
prereleaseVersion.value = prereleaseVersion.value.slice(1)
|
|
})
|
|
|
|
return { latestVersion, prereleaseVersion, loading, error }
|
|
}
|