@aws-amplify/datastore
Version:
AppSyncLocal support for aws-amplify
63 lines • 2.75 kB
JavaScript
;
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