Skip to content

Commit 54ac7b3

Browse files
committed
perf: auto refreshRelease
1 parent 55e164e commit 54ac7b3

File tree

6 files changed

+86
-68
lines changed

6 files changed

+86
-68
lines changed

docs/.vitepress/components/ApkTable.vue

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
<script setup lang="ts">
2+
import { onMounted } from 'vue';
23
import DownloadText from './DownloadText.vue';
3-
import { betaRelease, stableRelease } from '../data/apk.load';
4+
import {
5+
betaReleaseRef,
6+
stableReleaseRef,
7+
refreshRelease,
8+
} from '../data/apk.ref';
9+
10+
onMounted(refreshRelease);
411
</script>
512
<template>
613
<table>
@@ -18,21 +25,24 @@ import { betaRelease, stableRelease } from '../data/apk.load';
1825
<td>正式版</td>
1926
<td>
2027
<DownloadText
21-
:href="stableRelease.href"
22-
:name="stableRelease.filename"
28+
:href="stableReleaseRef.href"
29+
:name="stableReleaseRef.filename"
2330
/>
2431
</td>
25-
<td>{{ stableRelease.fileSizeDesc }}</td>
26-
<td>{{ stableRelease.date }}</td>
32+
<td>{{ stableReleaseRef.fileSizeDesc }}</td>
33+
<td>{{ stableReleaseRef.date }}</td>
2734
<td>稳定版</td>
2835
</tr>
29-
<tr v-if="betaRelease.filename !== stableRelease.filename">
36+
<tr v-if="betaReleaseRef.filename !== stableReleaseRef.filename">
3037
<td>测试版</td>
3138
<td>
32-
<DownloadText :href="betaRelease.href" :name="betaRelease.filename" />
39+
<DownloadText
40+
:href="betaReleaseRef.href"
41+
:name="betaReleaseRef.filename"
42+
/>
3343
</td>
34-
<td>{{ betaRelease.fileSizeDesc }}</td>
35-
<td>{{ betaRelease.date }}</td>
44+
<td>{{ betaReleaseRef.fileSizeDesc }}</td>
45+
<td>{{ betaReleaseRef.date }}</td>
3646
<td>更新快不稳定</td>
3747
</tr>
3848
</tbody>

docs/.vitepress/components/DownloadText.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import { computed, shallowRef } from 'vue';
2+
import { shallowRef } from 'vue';
33
44
const props = withDefaults(
55
defineProps<{

docs/.vitepress/data/apk.load.ts

Lines changed: 3 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,4 @@
1-
import { customFetch } from './fetch';
1+
import { getApkVersionInfo } from './apk.util';
22

3-
export interface VersionInfo {
4-
name: string;
5-
date: string;
6-
href: string;
7-
filename: string;
8-
fileSizeDesc: string;
9-
}
10-
export interface ApkData {
11-
stable: VersionInfo;
12-
beta: VersionInfo;
13-
}
14-
15-
const getFileSizeDesc = (size: number): string => {
16-
if (size < 1024) {
17-
return size + 'B';
18-
}
19-
if (size < 1024 * 1024) {
20-
return (size / 1024).toFixed(2) + 'KB';
21-
}
22-
if (size < 1024 * 1024 * 1024) {
23-
return (size / (1024 * 1024)).toFixed(2) + 'MB';
24-
}
25-
return (size / (1024 * 1024 * 1024)).toFixed(2) + 'GB';
26-
};
27-
28-
const getVersionInfo = async (url: string): Promise<VersionInfo> => {
29-
const r = await customFetch(url).then((r) => r.json());
30-
return {
31-
name: r.versionName,
32-
href: new URL(r.downloadUrl, url).href,
33-
date: r.date,
34-
filename: 'v' + r.versionName + '.apk',
35-
fileSizeDesc: getFileSizeDesc(r.fileSize),
36-
};
37-
};
38-
39-
export const stableRelease = await getVersionInfo(
40-
'https://registry.npmmirror.com/@gkd-kit/app/latest/files/index.json',
41-
);
42-
43-
export const betaRelease = await getVersionInfo(
44-
'https://registry.npmmirror.com/@gkd-kit/app-beta/latest/files/index.json',
45-
);
3+
export const stableRelease = await getApkVersionInfo(true);
4+
export const betaRelease = await getApkVersionInfo(false);

docs/.vitepress/data/apk.ref.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { shallowRef } from 'vue';
2+
import { stableRelease, betaRelease } from './apk.load';
3+
import { getApkVersionInfo } from './apk.util';
4+
5+
export const stableReleaseRef = shallowRef(stableRelease);
6+
export const betaReleaseRef = shallowRef(betaRelease);
7+
let isRefreshed = false;
8+
export const refreshRelease = async () => {
9+
if (isRefreshed) return;
10+
isRefreshed = true;
11+
await Promise.all([
12+
getApkVersionInfo(true).then((v) => {
13+
stableReleaseRef.value = v;
14+
}),
15+
getApkVersionInfo(false).then((v) => {
16+
betaReleaseRef.value = v;
17+
}),
18+
]);
19+
};

docs/.vitepress/data/apk.util.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { customFetch } from './fetch';
2+
3+
export interface VersionInfo {
4+
name: string;
5+
date: string;
6+
href: string;
7+
filename: string;
8+
fileSizeDesc: string;
9+
}
10+
11+
const getFileSizeDesc = (size: number): string => {
12+
if (size < 1024) {
13+
return size + 'B';
14+
}
15+
if (size < 1024 * 1024) {
16+
return (size / 1024).toFixed(2) + 'KB';
17+
}
18+
if (size < 1024 * 1024 * 1024) {
19+
return (size / (1024 * 1024)).toFixed(2) + 'MB';
20+
}
21+
return (size / (1024 * 1024 * 1024)).toFixed(2) + 'GB';
22+
};
23+
24+
const getVersionInfo = async (url: string): Promise<VersionInfo> => {
25+
const r = await customFetch(url);
26+
const d = await r.json();
27+
return {
28+
name: d.versionName,
29+
href: new URL(d.downloadUrl, r.url).href,
30+
date: d.date,
31+
filename: 'v' + d.versionName + '.apk',
32+
fileSizeDesc: getFileSizeDesc(d.fileSize),
33+
};
34+
};
35+
36+
export const getApkVersionInfo = async (
37+
stable: boolean,
38+
): Promise<VersionInfo> => {
39+
const url = stable
40+
? 'https://registry.npmmirror.com/@gkd-kit/app/latest/files/index.json'
41+
: 'https://registry.npmmirror.com/@gkd-kit/app-beta/latest/files/index.json';
42+
return getVersionInfo(url);
43+
};
44+

docs/.vitepress/utils/apk.ts

Lines changed: 0 additions & 14 deletions
This file was deleted.

0 commit comments

Comments
 (0)