UNPKG

taro-hooks

Version:
56 lines (55 loc) 2.59 kB
"use strict"; 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); } Object.defineProperty(exports, "__esModule", { value: true }); var taro_1 = require("@tarojs/taro"); var core_1 = require("@taro-hooks/core"); var shared_1 = require("@taro-hooks/shared"); var tool_1 = require("../utils/tool"); function useApp(allDefault) { var appInstance = (0, core_1.useRef)((0, taro_1.getApp)({ allowDefault: Boolean(allDefault) })); var _ref = (0, core_1.useState)(generateGlobalDataFromAppInstance(appInstance.current)), globalData = _ref[0], setGlobalData = _ref[1]; (0, core_1.useEffect)(function () { if (appInstance.current) { setGlobalData(generateGlobalDataFromAppInstance(appInstance.current)); } }, [appInstance]); var setGlobalDataAsync = function setGlobalDataAsync(key, value) { return new Promise(function (resolve, reject) { if ((0, shared_1.isUndef)(key)) reject((0, tool_1.generateGeneralFail)('setGlobalData', 'please privide key')); try { var _extends2, _appInstance$current$, _appInstance$current, _appInstance$current$2; var latestGobalData = _extends({}, (0, shared_1.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((0, tool_1.generateGeneralFail)('setGlobalData', 'success')); } catch (e) { reject((0, tool_1.generateGeneralFail)('setGlobalData', e.message)); } }); }; return { app: appInstance.current, globalData: globalData, setGlobalData: setGlobalDataAsync }; } exports["default"] = useApp; // TODO: $app may not exists. filter normal key, rest is globalData function generateGlobalDataFromAppInstance(app) { var UNSAFE = ['config', 'onHide', 'onLaunch', 'onShow']; var _ref2 = app != null ? app : {}, $app = _ref2.$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]); })); }