@slan-health/taro-vueuse
Version:
taro vue版本hooks
52 lines (51 loc) • 1.63 kB
JavaScript
import { getEnv, getUpdateManager } from "@tarojs/taro";
import useModal from "../useModal/index.js";
import useToast from "../useToast/index.js";
import { ENV_TYPE } from "../constant.js";
function useUpdateManager({
onCheckForUpdate,
onUpdateReady,
onUpdateFailed
} = {}) {
const env = getEnv();
const updateManagerInstance = getUpdateManager();
const [{ showNoneAsync }] = useToast();
const [show] = useModal({
title: "更新提示",
content: "新版本已经准备好,是否重启应用?"
});
const onDefaultCheckForUpdate = (manager, result) => {
if (result.hasUpdate) {
showNoneAsync("检测到有新版本正在更新...");
}
};
const onDefaultUpdateReady = () => {
show().then(() => {
updateManagerInstance.applyUpdate();
});
};
const onDefaultUpdateFailed = () => {
showNoneAsync("新版本下载失败,请稍后重试!");
};
const addEventListener = () => {
if (env === ENV_TYPE.WEAPP) {
updateManagerInstance.onCheckForUpdate((result) => {
(onCheckForUpdate ?? onDefaultCheckForUpdate)(updateManagerInstance, result);
});
updateManagerInstance.onUpdateReady(() => {
(onUpdateReady ?? onDefaultUpdateReady)(updateManagerInstance);
});
updateManagerInstance.onUpdateFailed(() => {
(onUpdateFailed ?? onDefaultUpdateFailed)(updateManagerInstance);
});
} else {
console.log(`此hooks只为小程序提供,当前环境为${env}`);
}
};
addEventListener();
return updateManagerInstance;
}
export {
useUpdateManager as default
};
//# sourceMappingURL=index.js.map