UNPKG

@state-sync/redux-path-reducer

Version:
77 lines (76 loc) 2.83 kB
"use strict"; 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; };