@slan-health/taro-vueuse
Version:
taro vue版本hooks
75 lines (74 loc) • 2.81 kB
JavaScript
import { getEnv, getSetting, requestSubscribeMessage, openSetting } from "@tarojs/taro";
import useModal from "../useModal/index.js";
import { ENV_TYPE } from "../constant.js";
function useRequestSubscribeMessage() {
const env = getEnv();
const [show] = useModal({
content: "未授权发送通知,您将收不到通知!",
confirmText: "重新授权",
cancelText: "取消授权"
});
const requestSubscribeMessageAsync = (tmplIds) => {
return new Promise((resolve, reject) => {
if (env !== ENV_TYPE.WEAPP || !(tmplIds == null ? void 0 : tmplIds.length)) {
reject({ errMsg: "requestSubscribeMessage: fail" });
} else {
try {
getSetting({
withSubscriptions: true,
success: (res) => {
if (res.subscriptionsSetting.mainSwitch) {
if (res.subscriptionsSetting.itemSettings != null) {
let currTmplIds = [];
let currItemSettings = {};
tmplIds.forEach((id) => {
const moIdState = res.subscriptionsSetting.itemSettings[id];
if (moIdState == void 0) {
currTmplIds.push(id);
} else {
currItemSettings[id] = moIdState;
}
});
if (currTmplIds.length == tmplIds.length) {
requestSubscribeMessage({
tmplIds,
success: ({ errMsg, ...result }) => resolve(result),
fail: reject
}).catch(reject);
} else if (currTmplIds.length > 0) {
requestSubscribeMessage({
tmplIds,
success: ({ errMsg, ...result }) => resolve({ ...currItemSettings, ...result }),
fail: reject
}).catch(reject);
} else {
resolve(currItemSettings);
}
} else {
requestSubscribeMessage({
tmplIds,
success: ({ errMsg, ...result }) => resolve(result),
fail: reject
}).catch(reject);
}
} else {
show().then(() => {
openSetting();
reject({ errMsg: "用户主开关关闭 mainSwitch为false" });
}).catch(reject);
}
},
fail: reject
});
} catch (e) {
reject({ errMsg: "requestSubscribeMessage: fail", data: e });
}
}
});
};
return [requestSubscribeMessageAsync];
}
export {
useRequestSubscribeMessage as default
};
//# sourceMappingURL=index.js.map