UNPKG

taro-hooks

Version:
51 lines 2.46 kB
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } import { getApp } from '@tarojs/taro'; import { useRef, useEffect, useState } from '@taro-hooks/core'; import { isUndef, escapeState } from '@taro-hooks/shared'; import { generateGeneralFail } from '../utils/tool'; function useApp(allDefault) { var appInstance = useRef(getApp({ allowDefault: Boolean(allDefault) })); var _useState = useState(generateGlobalDataFromAppInstance(appInstance.current)), globalData = _useState[0], setGlobalData = _useState[1]; useEffect(function () { if (appInstance.current) { setGlobalData(generateGlobalDataFromAppInstance(appInstance.current)); } }, [appInstance]); var setGlobalDataAsync = function setGlobalDataAsync(key, value) { return new Promise(function (resolve, reject) { if (isUndef(key)) reject(generateGeneralFail('setGlobalData', 'please privide key')); try { var _extends2, _appInstance$current$, _appInstance$current, _appInstance$current$2; var latestGobalData = _extends({}, escapeState(globalData), (_extends2 = {}, _extends2[key] = value, _extends2)); var $globalData = (_appInstance$current$ = (_appInstance$current = appInstance.current) == null ? void 0 : (_appInstance$current$2 = _appInstance$current.$app) == null ? void 0 : _appInstance$current$2.globalData) != null ? _appInstance$current$ : appInstance.current; $globalData[key] = value; setGlobalData(latestGobalData); resolve(generateGeneralFail('setGlobalData', 'success')); } catch (e) { reject(generateGeneralFail('setGlobalData', e.message)); } }); }; return { app: appInstance.current, globalData: globalData, setGlobalData: setGlobalDataAsync }; } export default useApp; // TODO: $app may not exists. filter normal key, rest is globalData function generateGlobalDataFromAppInstance(app) { var UNSAFE = ['config', 'onHide', 'onLaunch', 'onShow']; var _ref = app != null ? app : {}, $app = _ref.$app; if ($app != null && $app.globalData) { return $app == null ? void 0 : $app.globalData; } return Object.fromEntries(Object.entries(app).filter(function (v) { return !UNSAFE.includes(v[0]); })); }