UNPKG

@slan-health/taro-vueuse

Version:

taro vue版本hooks

74 lines (73 loc) 1.87 kB
import { getEnv, useDidShow, login, checkSession } from "@tarojs/taro"; import { ref } from "vue"; import { ENV_TYPE } from "../constant.js"; function useLogin() { const env = getEnv(); const code = ref(); const checkSessionSync = () => { return new Promise((resolve, reject) => { if (env === ENV_TYPE.WEAPP) { checkSession({ success: resolve, fail: reject }).catch(reject); } else { reject({ errMsg: "checkSession:fail" }); } }); }; useDidShow(() => { loginSync(false); }); const loginSync = (needCheck) => { return new Promise((resolve, reject) => { if (env === ENV_TYPE.WEAPP) { const loginAction = () => { login({ success: (res) => { code.value = res.code; resolve(res.code); }, fail: reject }).catch(reject); }; try { if (needCheck) { checkSessionSync().then(() => { if (code.value) { resolve(code.value); } else { loginAction(); } }).catch(reject); } else { loginAction(); } } catch (e) { reject({ errMsg: "login:fail", data: e }); } } else { reject({ errMsg: "checkSession:fail" }); } }); }; const getPhoneNumber = (e) => { if (!e.detail.encryptedData) return Promise.reject({ errMsg: "login:fail" }); const info = e.detail; return loginSync(true).then((code2) => Promise.resolve({ code: code2, encryptedData: info.encryptedData, iv: info.iv, phoneNumberCode: info.code })); }; return { checkSessionSync, loginSync, getPhoneNumber }; } export { useLogin as default }; //# sourceMappingURL=index.js.map