xref: /MusicFree/src/hooks/useCheckUpdate.ts (revision 819a9075ec97c73412fbf94430d3065e57d52b4e)
1import { showDialog } from "@/components/dialogs/useDialog";
2import PersistStatus from "@/core/persistStatus.ts";
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