From c195cc01034245a28189179b951cb5c63ccce828 Mon Sep 17 00:00:00 2001 From: Rinne <180847792+rinnein@users.noreply.github.com> Date: Fri, 10 Apr 2026 22:39:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E9=A1=B5=E9=9D=A2=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E9=80=9A=E8=BF=87=20github=20api=20=E5=AE=9E=E6=97=B6?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=9C=80=E6=96=B0=E7=89=88=E6=9C=AC=E5=8F=B7?= =?UTF-8?q?=20(#271)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (若获取失败则回退为当前硬编码的数据) --- en/guide/download.md | 20 +++++++++++++++----- guide/download.md | 20 +++++++++++++++----- useLatestVersion.ts | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+), 10 deletions(-) create mode 100644 useLatestVersion.ts diff --git a/en/guide/download.md b/en/guide/download.md index 1c4e4db..1e00f6b 100644 --- a/en/guide/download.md +++ b/en/guide/download.md @@ -3,8 +3,11 @@ home: hello --- @@ -153,12 +163,12 @@ The command line program package includes four executables:
-## EasyTier v{{ data[channel] }} { #latest } +## EasyTier v{{ currentVersion }} { #latest } - GitHub Acceleration
diff --git a/guide/download.md b/guide/download.md index 5bf7918..676006e 100644 --- a/guide/download.md +++ b/guide/download.md @@ -3,8 +3,11 @@ home: hello --- @@ -153,12 +163,12 @@ function renderUrlTmpl(url_tmpl: string): string {
-## EasyTier v{{ data[channel] }} { #latest } +## EasyTier v{{ currentVersion }} { #latest } - Github 加速
diff --git a/useLatestVersion.ts b/useLatestVersion.ts new file mode 100644 index 0000000..a136b46 --- /dev/null +++ b/useLatestVersion.ts @@ -0,0 +1,36 @@ +import { ref, onMounted } from 'vue' + +export function useLatestVersion() { + const latestVersion = ref(null) + const prereleaseVersion = ref(null) + const loading = ref(true) + const error = ref(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 } +} \ No newline at end of file