12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import {createGlobalState, useEventListener, useStorage} from "@vueuse/core";
- import {computed, ref} from "vue";
- import mxConst from "@/common/mxConst";
- import {sys} from "@/uni_modules/uv-ui-tools/libs/function";
- export const useEnvStore = createGlobalState(() => {
- // 平台判断,和调用bridge有关,如视频控制、下载等。
- const platform = ref(window.platform || "");
- const isH5 = computed(() => platform.value === "h5");
- const isWap2App = computed(() => platform.value === "wap2app");
- const systemInfo = computed(() => {
- const {
- platform,
- model,
- deviceId,
- deviceModel,
- deviceType,
- appId,
- version,
- appVersion,
- appVersionCode,
- } = sys();
- return {
- platform,
- model,
- deviceId,
- deviceModel,
- deviceType,
- appId,
- version,
- appVersion,
- appVersionCode,
- };
- });
- const isAndroid = computed(() => systemInfo.value.platform.toLowerCase() == 'android')
- const isIOS = computed(() => systemInfo.value.platform.toLowerCase() == 'ios')
- // TODO: isParent 表示这个应用是从微信公众号启动的。
- // 但这个判断受限于调用时机,不如上面的 platform 有一定封装来保证和运行环境契合。
- const isParent = ref(
- window?.location?.href.includes(mxConst.keyParentIdentifier)
- );
- // 引导页已读标志。
- const isGuideRead = useStorage(mxConst.keyGuideRead, false);
- // 访问相册权限初次提示标志
- const isDisplayedPermission = useStorage(
- mxConst.keyDisplayPermission,
- false
- );
- // hook
- useEventListener(window, "platformChange", (evt) => {
- // @/index.html 中定义的 window.platform 会在不同环境下被赋值,此时需要更新 platform 状态
- // 我们在 setPlatform 中暴露了 platformChange 事件用来让 vue 组件监听平台变化
- platform.value = window?.platform || "";
- });
- return {
- platform,
- isH5,
- isWap2App,
- isParent,
- isGuideRead,
- isDisplayedPermission,
- systemInfo,
- isAndroid,
- isIOS
- };
- });
|