diff --git a/bower.json b/bower.json index f1628fd..954a2aa 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "strolch-wc-ws-observer", "description": "Strolch Polymer WebSocket observer update handler extension", - "version": "0.2.1", + "version": "0.2.2", "authors": [ "Robert von Burg" ], diff --git a/strolch-wc-ws-observer.html b/strolch-wc-ws-observer.html index e68edfb..5770768 100644 --- a/strolch-wc-ws-observer.html +++ b/strolch-wc-ws-observer.html @@ -13,6 +13,7 @@ var webSocket = null; var observers = {}; + var registrations = {}; Polymer({ is: 'strolch-wc-ws-observer', @@ -71,8 +72,26 @@ console.log("Unregistered callback for " + objectType + " " + type + " " + source); }, + _reRegister: function () { + var objectTypes = Object.keys(observers); + console.log("Reregistering " + objectTypes.length + " object types..."); + for (var i = 0; i < objectTypes.length; i++) { + var objectType = objectTypes[i]; + + var byType = observers[objectTypes[i]]; + var types = Object.keys(byType); + console.log("Reregistering " + types.length + " types..."); + for (var j = 0; j < types.length; j++) { + var type = types[i]; + var params = registrations[objectType + "_" + type]; + this._register(objectType, type, params); + } + } + }, + _register: function (objectType, type, params) { console.log("Registering for updates for " + objectType + " " + type); + registrations[objectType + "_" + type] = params; this._sendWsMessage({ msgType: "ObserverRegister", objectType: objectType, @@ -158,7 +177,8 @@ if (msg.msgType == "ObserverAdd" || msg.msgType == "ObserverUpdate" || msg.msgType == "ObserverRemove") { this.notifyObservers(msg); } else if (msg.msgType == "Authenticate") { - console.log("Successfully authenticated!"); + console.log("Successfully authenticated, re-registering..."); + this._reRegister(); } else { console.error("Unhandled event " + msg.msgType); }