vue-hooks-plus
Version:
Vue hooks library
32 lines (31 loc) • 1.15 kB
JavaScript
const isBrowser = require("./utils");
const isDocumentVisible = require("./isDocumentVisible");
const isOnline = require("./isOnline");
const _interopDefaultLegacy = (e) => e && typeof e === "object" && "default" in e ? e : { default: e };
const isBrowser__default = /* @__PURE__ */ _interopDefaultLegacy(isBrowser);
const isDocumentVisible__default = /* @__PURE__ */ _interopDefaultLegacy(isDocumentVisible);
const isOnline__default = /* @__PURE__ */ _interopDefaultLegacy(isOnline);
const listeners = [];
function subscribe(listener) {
listeners.push(listener);
return function unsubscribe() {
const index = listeners.indexOf(listener);
if (index > -1) {
listeners.splice(index, 1);
}
};
}
if (isBrowser__default.default) {
const revalidate = () => {
if (!isDocumentVisible__default.default() || !isOnline__default.default())
return;
for (let i = 0; i < listeners.length; i++) {
const listener = listeners[i];
listener();
}
};
window.addEventListener("visibilitychange", revalidate, false);
window.addEventListener("focus", revalidate, false);
}
module.exports = subscribe;
;