@aws-amplify/datastore
Version:
AppSyncLocal support for aws-amplify
61 lines • 2.59 kB
JavaScript
import { __assign, __awaiter, __generator } from "tslib";
import Observable from 'zen-observable-ts';
import { ConsoleLogger as Logger } from '@aws-amplify/core';
import { ReachabilityMonitor } from './datastoreReachability';
var logger = new Logger('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 Observable(function (observer) {
_this.observer = observer;
// Will be used to forward socket connection changes, enhancing Reachability
_this.subscription = ReachabilityMonitor.subscribe(function (_a) {
var online = _a.online;
_this.connectionStatus.online = online;
var observerResult = __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 __awaiter(this, void 0, void 0, function () {
return __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 = __assign({}, _this.connectionStatus); // copyOf status
_this.observer.next(observerResult);
}, RECONNECTING_IN); // giving time for socket cleanup and network status stabilization
}
};
return DataStoreConnectivity;
}());
export default DataStoreConnectivity;
//# sourceMappingURL=datastoreConnectivity.js.map