UNPKG

@aws-amplify/datastore

Version:

AppSyncLocal support for aws-amplify

63 lines 2.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var zen_observable_ts_1 = tslib_1.__importDefault(require("zen-observable-ts")); var core_1 = require("@aws-amplify/core"); var datastoreReachability_1 = require("./datastoreReachability"); var logger = new core_1.ConsoleLogger('DataStore'); var RECONNECTING_IN = 5000; // 5s this may be configurable in the future var DataStoreConnectivity = /** @class */ (function () { function DataStoreConnectivity() { this.connectionStatus = { online: false, }; } DataStoreConnectivity.prototype.status = function () { var _this = this; if (this.observer) { throw new Error('Subscriber already exists'); } return new zen_observable_ts_1.default(function (observer) { _this.observer = observer; // Will be used to forward socket connection changes, enhancing Reachability _this.subscription = datastoreReachability_1.ReachabilityMonitor.subscribe(function (_a) { var online = _a.online; _this.connectionStatus.online = online; var observerResult = tslib_1.__assign({}, _this.connectionStatus); // copyOf status observer.next(observerResult); }); return function () { clearTimeout(_this.timeout); _this.unsubscribe(); }; }); }; DataStoreConnectivity.prototype.unsubscribe = function () { if (this.subscription) { clearTimeout(this.timeout); this.subscription.unsubscribe(); } }; // for consistency with other background processors. DataStoreConnectivity.prototype.stop = function () { return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { this.unsubscribe(); return [2 /*return*/]; }); }); }; DataStoreConnectivity.prototype.socketDisconnected = function () { var _this = this; if (this.observer && typeof this.observer.next === 'function') { this.observer.next({ online: false }); // Notify network issue from the socket this.timeout = setTimeout(function () { var observerResult = tslib_1.__assign({}, _this.connectionStatus); // copyOf status _this.observer.next(observerResult); }, RECONNECTING_IN); // giving time for socket cleanup and network status stabilization } }; return DataStoreConnectivity; }()); exports.default = DataStoreConnectivity; //# sourceMappingURL=datastoreConnectivity.js.map