vue-hooks-plus
Version:
Vue hooks library
29 lines (28 loc) • 730 B
JavaScript
import isBrowser from "./utils";
import isDocumentVisible from "./isDocumentVisible";
import isOnline from "./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) {
const revalidate = () => {
if (!isDocumentVisible() || !isOnline())
return;
for (let i = 0; i < listeners.length; i++) {
const listener = listeners[i];
listener();
}
};
window.addEventListener("visibilitychange", revalidate, false);
window.addEventListener("focus", revalidate, false);
}
export {
subscribe as default
};