UNPKG

@taro-hooks/use-request

Version:
57 lines (56 loc) 1.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var core_1 = require("@taro-hooks/core"); var ahooks_1 = require("@taro-hooks/ahooks"); var shared_1 = require("@taro-hooks/shared"); var useVisible_1 = tslib_1.__importDefault(require("../useVisible")); var subscribeReVisible_1 = tslib_1.__importDefault(require("../utils/subscribeReVisible")); var usePollingPlugin = function usePollingPlugin(fetchInstance, _ref) { var pollingInterval = _ref.pollingInterval, _ref$pollingWhenHidde = _ref.pollingWhenHidden, pollingWhenHidden = _ref$pollingWhenHidde === void 0 ? true : _ref$pollingWhenHidde; var timerRef = (0, core_1.useRef)(); var unsubscribeRef = (0, core_1.useRef)(); var documentVisible = (0, useVisible_1["default"])(); var unsubscribeReVisible = (0, subscribeReVisible_1["default"])(function () { if (!pollingWhenHidden && !(0, shared_1.escapeState)(documentVisible)) { fetchInstance.refresh(); } }); var stopPolling = function stopPolling() { if (timerRef.current) { clearTimeout(timerRef.current); } unsubscribeRef.current == null ? void 0 : unsubscribeRef.current(); }; (0, ahooks_1.useUpdateEffect)(function () { if (!pollingInterval) { stopPolling(); } }, [pollingInterval]); if (!pollingInterval) { return {}; } return { onBefore: function onBefore() { stopPolling(); }, onFinally: function onFinally() { // if pollingWhenHidden = false && document is hidden, then stop polling and subscribe revisable if (!pollingWhenHidden && !(0, shared_1.escapeState)(documentVisible) || !pollingInterval) { unsubscribeRef.current = unsubscribeReVisible; return; } timerRef.current = setTimeout(function () { fetchInstance.refresh(); }, pollingInterval); }, onCancel: function onCancel() { stopPolling(); } }; }; exports["default"] = usePollingPlugin;