UNPKG

vue-admin-core

Version:
62 lines (57 loc) 1.58 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var subscribeReVisible = require('../../__utils__/subscribeReVisible.js'); const usePollingPlugin = (fetchInstance, { pollingInterval, pollingWhenHidden = true, pollingErrorRetryCount = -1 }) => { let timer = null; let count = 0; let unsubscribe = () => { }; const stopPolling = () => { if (timer) { clearTimeout(timer); } if (unsubscribe) unsubscribe(); }; vue.watch(vue.toRef(pollingInterval), () => { if (!vue.toValue(pollingInterval)) { stopPolling(); } }); if (!pollingInterval) { return {}; } return { onBefore: () => { stopPolling(); }, onError: () => { count += 1; }, onSuccess: () => { count = 0; }, onFinally: () => { if (pollingErrorRetryCount === -1 || // When an error occurs, the request is not repeated after pollingErrorRetryCount retries pollingErrorRetryCount !== -1 && count <= pollingErrorRetryCount) { timer = setTimeout(() => { if (!pollingWhenHidden && !subscribeReVisible.isDocumentVisible()) { unsubscribe = subscribeReVisible.default(() => { fetchInstance.refresh(); }); } else { fetchInstance.refresh(); } }, vue.toValue(pollingInterval)); } else { count = 0; } }, onCancel: () => { stopPolling(); } }; }; exports.default = usePollingPlugin; //# sourceMappingURL=usePollingPlugin.js.map