From 832a770c2f9924fb85716ab5ae5537b8fb72077a Mon Sep 17 00:00:00 2001 From: Bryan Chauvin Date: Sun, 7 Oct 2018 18:44:15 -0400 Subject: [PATCH 1/2] Added component activation/register observers --- .../app/services/componentManager.js | 2 ++ .../app/services/desktopManager.js | 22 ++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/app/services/componentManager.js b/app/assets/javascripts/app/services/componentManager.js index 7dcfc79e4..37c23eeb4 100644 --- a/app/assets/javascripts/app/services/componentManager.js +++ b/app/assets/javascripts/app/services/componentManager.js @@ -808,6 +808,8 @@ class ComponentManager { } }); this.postActiveThemeToComponent(component); + + this.desktopManager.notifyComponentActivation(component); } /* Performs func in timeout, but syncronously, if used `await waitTimeout` */ diff --git a/app/assets/javascripts/app/services/desktopManager.js b/app/assets/javascripts/app/services/desktopManager.js index 23612e64f..838f455ea 100644 --- a/app/assets/javascripts/app/services/desktopManager.js +++ b/app/assets/javascripts/app/services/desktopManager.js @@ -10,6 +10,7 @@ class DesktopManager { this.$rootScope = $rootScope; this.timeout = $timeout; this.updateObservers = []; + this.activationObservers = []; this.isDesktop = isDesktopApplication(); @@ -106,7 +107,26 @@ class DesktopManager { for(var observer of this.updateObservers) { observer.callback(component); } - }) + }); + } + + desktop_registerActivationObserver(callback) { + var observer = {id: Math.random, callback: callback}; + this.activationObservers.push(observer); + return observer; + } + + desktop_deregisterActivationObserver(observer) { + _.pull(this.activationObservers, observer); + } + + /* Notify observers that a component has been registered/activated */ + notifyComponentActivation(component) { + this.timeout(() => { + for(var observer of this.activationObservers) { + observer.callback(component); + } + }); } /* Used to resolve "sn://" */ From e9c2a8bef2e6c0907fd6a7175070e4503c638a16 Mon Sep 17 00:00:00 2001 From: Bryan Chauvin Date: Mon, 8 Oct 2018 12:45:27 -0400 Subject: [PATCH 2/2] Switched to serialized version of component to component activation observers --- .../javascripts/app/services/desktopManager.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/app/assets/javascripts/app/services/desktopManager.js b/app/assets/javascripts/app/services/desktopManager.js index 838f455ea..d437fa296 100644 --- a/app/assets/javascripts/app/services/desktopManager.js +++ b/app/assets/javascripts/app/services/desktopManager.js @@ -10,7 +10,7 @@ class DesktopManager { this.$rootScope = $rootScope; this.timeout = $timeout; this.updateObservers = []; - this.activationObservers = []; + this.componentActivationObservers = []; this.isDesktop = isDesktopApplication(); @@ -110,21 +110,23 @@ class DesktopManager { }); } - desktop_registerActivationObserver(callback) { + desktop_registerComponentActivationObserver(callback) { var observer = {id: Math.random, callback: callback}; - this.activationObservers.push(observer); + this.componentActivationObservers.push(observer); return observer; } - desktop_deregisterActivationObserver(observer) { - _.pull(this.activationObservers, observer); + desktop_deregisterComponentActivationObserver(observer) { + _.pull(this.componentActivationObservers, observer); } /* Notify observers that a component has been registered/activated */ - notifyComponentActivation(component) { + async notifyComponentActivation(component) { + var serializedComponent = await this.convertComponentForTransmission(component); + this.timeout(() => { - for(var observer of this.activationObservers) { - observer.callback(component); + for(var observer of this.componentActivationObservers) { + observer.callback(serializedComponent); } }); }