@taro-hooks/use-request
Version:
useRequest hook for Taro
57 lines (56 loc) • 1.99 kB
JavaScript
;
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;