31 lines
635 B
JavaScript
31 lines
635 B
JavaScript
export class NetworkDetector {
|
|
constructor() {
|
|
this.isOnline = navigator.onLine;
|
|
this.listeners = [];
|
|
}
|
|
|
|
subscribe(listener) {
|
|
this.listeners.push(listener);
|
|
|
|
window.addEventListener('online', () => {
|
|
this.isOnline = true;
|
|
this.listeners.forEach(l => l(true));
|
|
});
|
|
|
|
window.addEventListener('offline', () => {
|
|
this.isOnline = false;
|
|
this.listeners.forEach(l => l(false));
|
|
});
|
|
|
|
return () => {
|
|
this.listeners = this.listeners.filter(l => l !== listener);
|
|
};
|
|
}
|
|
|
|
getStatus() {
|
|
return this.isOnline;
|
|
}
|
|
}
|
|
|
|
export const networkDetector = new NetworkDetector();
|