UNPKG

taro-hooks

Version:
40 lines (39 loc) 1.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createUseInfoHook = void 0; var core_1 = require("@taro-hooks/core"); var shared_1 = require("@taro-hooks/shared"); var tool_1 = require("../utils/tool"); /** * a general generate info api hook, make direaction return, use undefined make fail * @param {TCallback<T>} fn * @returns {T} */ function createUseInfoHook(fn, defaultReturn) { return function () { var safeExcute = function safeExcute() { try { if (!tool_1.isProd) { var _fn; // dev mode will sync function will return a promise result // @ts-ignore var result = (_fn = fn()) == null ? void 0 : _fn.then == null ? void 0 : _fn.then(function (e) { return e; }, shared_1.log); return (0, tool_1.typeOf)(result, 'Promise') && 'then' in result ? defaultReturn : // @ts-ignore result || fn(); } // @ts-ignore return fn(); } catch (e) { (0, shared_1.logError)("[createUseInfoHook]: " + e.message + ". " + String(fn)); return defaultReturn; } }; return (0, core_1.useRef)(safeExcute()).current; }; } exports.createUseInfoHook = createUseInfoHook;