File tree Expand file tree Collapse file tree 6 files changed +86
-68
lines changed
Expand file tree Collapse file tree 6 files changed +86
-68
lines changed Original file line number Diff line number Diff line change 11<script setup lang="ts">
2+ import { onMounted } from ' vue' ;
23import 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 >
Original file line number Diff line number Diff line change 11<script setup lang="ts">
2- import { computed , shallowRef } from ' vue' ;
2+ import { shallowRef } from ' vue' ;
33
44const props = withDefaults (
55 defineProps <{
Original file line number Diff line number Diff line change 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 ) ;
Original file line number Diff line number Diff line change 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+ } ;
Original file line number Diff line number Diff line change 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+
Load Diff This file was deleted.
You can’t perform that action at this time.
0 commit comments