xref: /MusicFree/src/hooks/useCheckUpdate.ts (revision 6613e77203923e5b1742a49281bfa5de03fc1440)
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                backUrl: data.download[1],
29            });
30        } else {
31            if (showToast) {
32                Toast.success('当前是最新版本~');
33            }
34        }
35    });
36};
37
38export default function (callOnMount = true) {
39    useEffect(() => {
40        if (callOnMount) {
41            checkUpdateAndShowResult(false, true);
42        }
43    }, []);
44
45    return checkUpdateAndShowResult;
46}
47