xref: /MusicFree/src/hooks/useCheckUpdate.ts (revision 6f73e807144af9b496f38d87ede85146d6bf98f4)
1import {showDialog} from '@/components/dialogs/useDialog';
2import PersistStatus from '@/core/persistStatus';
3import checkUpdate from '@/utils/checkUpdate';
4import Toast from '@/utils/toast';
5import {compare} from 'compare-versions';
6import {useEffect} from 'react';
7
8export const checkUpdateAndShowResult = (
9    showToast = false,
10    checkSkip = false,
11) => {
12    checkUpdate().then(updateInfo => {
13        if (updateInfo?.needUpdate) {
14            const {data} = updateInfo;
15            const skipVersion = PersistStatus.get('app.skipVersion');
16            console.log(skipVersion, data);
17            if (
18                checkSkip &&
19                skipVersion &&
20                compare(skipVersion, data.version, '>=')
21            ) {
22                return;
23            }
24            showDialog('DownloadDialog', {
25                version: data.version,
26                content: data.changeLog,
27                fromUrl: data.download[0],
28            });
29        } else {
30            if (showToast) {
31                Toast.success('当前是最新版本~');
32            }
33        }
34    });
35};
36
37export default function (callOnMount = true) {
38    useEffect(() => {
39        if (callOnMount) {
40            checkUpdateAndShowResult(false, true);
41        }
42    }, []);
43
44    return checkUpdateAndShowResult;
45}
46