UNPKG

@aws-amplify/core

Version:
49 lines (47 loc) 1.89 kB
'use strict'; // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 Object.defineProperty(exports, "__esModule", { value: true }); exports.Reachability = void 0; const rxjs_1 = require("rxjs"); const utils_1 = require("../utils"); class Reachability { networkMonitor(_) { const globalObj = (0, utils_1.isWebWorker)() ? self : typeof window !== 'undefined' && window; if (!globalObj) { return (0, rxjs_1.from)([{ online: true }]); } return new rxjs_1.Observable(observer => { observer.next({ online: globalObj.navigator.onLine }); const notifyOnline = () => { observer.next({ online: true }); }; const notifyOffline = () => { observer.next({ online: false }); }; globalObj.addEventListener('online', notifyOnline); globalObj.addEventListener('offline', notifyOffline); Reachability._observers.push(observer); return () => { globalObj.removeEventListener('online', notifyOnline); globalObj.removeEventListener('offline', notifyOffline); Reachability._observers = Reachability._observers.filter(_observer => _observer !== observer); }; }); } // expose observers to simulate offline mode for integration testing static _observerOverride(status) { for (const observer of this._observers) { if (observer.closed) { this._observers = this._observers.filter(_observer => _observer !== observer); continue; } observer?.next && observer.next(status); } } } exports.Reachability = Reachability; Reachability._observers = []; //# sourceMappingURL=Reachability.js.map