vue-admin-core
Version:
A Component Library for Vue 3
1 lines • 3.25 kB
Source Map (JSON)
{"version":3,"file":"usePollingPlugin.mjs","sources":["../../../../../../../package/hooks/useRequest/src/plugins/usePollingPlugin.ts"],"sourcesContent":["import { toRef, toValue, watch } from \"vue\";\nimport type { Plugin } from \"../types\";\nimport subscribeReVisible, { isDocumentVisible } from \"../../__utils__/subscribeReVisible\";\n\nconst usePollingPlugin: Plugin<any, any[]> = (\n fetchInstance,\n { pollingInterval, pollingWhenHidden = true, pollingErrorRetryCount = -1 }\n) => {\n let timer: any = null;\n let count: number = 0;\n let unsubscribe: () => void = () => {};\n\n const stopPolling = () => {\n if (timer) {\n clearTimeout(timer);\n }\n if (unsubscribe) unsubscribe();\n };\n\n watch(toRef(pollingInterval), () => {\n if (!toValue(pollingInterval)) {\n stopPolling();\n }\n });\n\n if (!pollingInterval) {\n return {};\n }\n\n return {\n onBefore: () => {\n stopPolling();\n },\n onError: () => {\n count += 1;\n },\n onSuccess: () => {\n count = 0;\n },\n onFinally: () => {\n if (\n pollingErrorRetryCount === -1 ||\n // When an error occurs, the request is not repeated after pollingErrorRetryCount retries\n (pollingErrorRetryCount !== -1 && count <= pollingErrorRetryCount)\n ) {\n timer = setTimeout(() => {\n // if pollingWhenHidden = false && document is hidden, then stop polling and subscribe revisible\n if (!pollingWhenHidden && !isDocumentVisible()) {\n unsubscribe = subscribeReVisible(() => {\n fetchInstance.refresh();\n });\n } else {\n fetchInstance.refresh();\n }\n }, toValue(pollingInterval));\n } else {\n count = 0;\n }\n },\n onCancel: () => {\n stopPolling();\n }\n };\n};\n\nexport default usePollingPlugin;\n"],"names":[],"mappings":";;;AAIM,MAAA,gBAAA,GAAuC,CAC3C,aACA,EAAA,EAAE,iBAAiB,iBAAoB,GAAA,IAAA,EAAM,sBAAyB,GAAA,CAAA,CAAA,EACnE,KAAA;AACH,EAAA,IAAI,KAAa,GAAA,IAAA,CAAA;AACjB,EAAA,IAAI,KAAgB,GAAA,CAAA,CAAA;AACpB,EAAA,IAAI,cAA0B,MAAM;AAAA,GAAC,CAAA;AAErC,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,KAAO,EAAA;AACT,MAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAAA,KACpB;AACA,IAAI,IAAA,WAAA;AAAa,MAAY,WAAA,EAAA,CAAA;AAAA,GAC/B,CAAA;AAEA,EAAM,KAAA,CAAA,KAAA,CAAM,eAAe,CAAA,EAAG,MAAM;AAClC,IAAI,IAAA,CAAC,OAAQ,CAAA,eAAe,CAAG,EAAA;AAC7B,MAAY,WAAA,EAAA,CAAA;AAAA,KACd;AAAA,GACD,CAAA,CAAA;AAED,EAAA,IAAI,CAAC,eAAiB,EAAA;AACpB,IAAA,OAAO,EAAC,CAAA;AAAA,GACV;AAEA,EAAO,OAAA;AAAA,IACL,UAAU,MAAM;AACd,MAAY,WAAA,EAAA,CAAA;AAAA,KACd;AAAA,IACA,SAAS,MAAM;AACb,MAAS,KAAA,IAAA,CAAA,CAAA;AAAA,KACX;AAAA,IACA,WAAW,MAAM;AACf,MAAQ,KAAA,GAAA,CAAA,CAAA;AAAA,KACV;AAAA,IACA,WAAW,MAAM;AACf,MAAA,IACE,sBAA2B,KAAA,CAAA,CAAA;AAAA,MAE1B,sBAAA,KAA2B,CAAM,CAAA,IAAA,KAAA,IAAS,sBAC3C,EAAA;AACA,QAAA,KAAA,GAAQ,WAAW,MAAM;AAEvB,UAAA,IAAI,CAAC,iBAAA,IAAqB,CAAC,iBAAA,EAAqB,EAAA;AAC9C,YAAA,WAAA,GAAc,mBAAmB,MAAM;AACrC,cAAA,aAAA,CAAc,OAAQ,EAAA,CAAA;AAAA,aACvB,CAAA,CAAA;AAAA,WACI,MAAA;AACL,YAAA,aAAA,CAAc,OAAQ,EAAA,CAAA;AAAA,WACxB;AAAA,SACF,EAAG,OAAQ,CAAA,eAAe,CAAC,CAAA,CAAA;AAAA,OACtB,MAAA;AACL,QAAQ,KAAA,GAAA,CAAA,CAAA;AAAA,OACV;AAAA,KACF;AAAA,IACA,UAAU,MAAM;AACd,MAAY,WAAA,EAAA,CAAA;AAAA,KACd;AAAA,GACF,CAAA;AACF;;;;"}