@state-sync/redux-path-reducer
Version:
state-sync client only json path reducer
77 lines (76 loc) • 2.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var IConnectionStatusListener_1 = require("./IConnectionStatusListener");
var StateSyncStatusReducer_1 = require("./StateSyncStatusReducer");
var StompConnection_1 = require("./StompConnection");
var SyncArea_1 = require("./SyncArea");
var SyncAreaRegistry_1 = require("./SyncAreaRegistry");
var SyncConfig_1 = require("./SyncConfig");
var SyncService = /** @class */ (function () {
function SyncService() {
this.areas = new SyncAreaRegistry_1.default();
}
SyncService.prototype.isFullyConnected = function () {
return this.connection.isFullyConnected();
};
/**
* Connect store to remote server
* @param store
* @param url
* @param {SyncConfig} config
*/
SyncService.prototype.initSync = function (store, url, config) {
var _this = this;
this.config = SyncConfig_1.SyncConfig.build(url, config);
this.store = store;
this.areas.forEach(function (area) { return area.init(); });
if (!this.connection) {
if (config) {
if (!this.connectionStatusListener) {
this.connectionStatusListener = new IConnectionStatusListener_1.ConnectionStatusListenerSilent();
}
this.connection = new StompConnection_1.default(this.config, this.connectionStatusListener, this.areas, function () { return _this.onReady(); });
this.connection.connect();
}
}
};
SyncService.prototype.dispatch = function (action) {
this.store.dispatch(action);
};
SyncService.prototype.send = function (event) {
this.connection.send(event);
};
/**
* Declare sync area and return reducer for this area
*
* @param {string} name
* @param initialState
* @param reducer
* @returns reducer
*/
SyncService.prototype.declareArea = function (name, initialState, reducer) {
var area = new SyncArea_1.SyncArea(name, initialState, this);
this.areas.add(area);
return area.wrap(reducer);
};
SyncService.prototype.area = function (name) {
return this.areas.get(name);
};
/**
* Declare status reducer
* @returns reducer
*/
SyncService.prototype.declareStatusArea = function () {
var _this = this;
this.connectionStatusListener = new IConnectionStatusListener_1.ConnectionStatusListenerForStore(function () { return _this.store; });
return StateSyncStatusReducer_1.default;
};
SyncService.prototype.onReady = function () {
this.areas.forEach(function (a) { return a.onReady(); });
};
return SyncService;
}());
var Instance = new SyncService();
exports.StateSync = function () {
return Instance;
};