diff --git a/js/js-resources.gresource.xml b/js/js-resources.gresource.xml index e223ee128..ee4b7635e 100644 --- a/js/js-resources.gresource.xml +++ b/js/js-resources.gresource.xml @@ -127,7 +127,7 @@ ui/workspacesView.js ui/xdndHandler.js - ui/components/__init__.js + ui/components.js ui/components/autorunManager.js ui/components/automountManager.js ui/components/networkAgent.js diff --git a/js/ui/components/__init__.js b/js/ui/components.js similarity index 63% rename from js/ui/components/__init__.js rename to js/ui/components.js index 74300136b..06751a964 100644 --- a/js/ui/components/__init__.js +++ b/js/ui/components.js @@ -6,16 +6,19 @@ var ComponentManager = class { this._allComponents = {}; this._enabledComponents = []; - Main.sessionMode.connect('updated', this._sessionUpdated.bind(this)); - this._sessionUpdated(); + Main.sessionMode.connect('updated', () => { + this._sessionModeUpdated().catch(logError); + }); + + this._sessionModeUpdated().catch(logError); } - _sessionUpdated() { + async _sessionModeUpdated() { let newEnabledComponents = Main.sessionMode.components; - newEnabledComponents + await Promise.allSettled([...newEnabledComponents .filter(name => !this._enabledComponents.includes(name)) - .forEach(name => this._enableComponent(name)); + .map(name => this._enableComponent(name))]); this._enabledComponents .filter(name => !newEnabledComponents.includes(name)) @@ -24,12 +27,13 @@ var ComponentManager = class { this._enabledComponents = newEnabledComponents; } - _importComponent(name) { - let module = imports.ui.components[name]; + async _importComponent(name) { + // TODO: Import as module + let module = await imports.ui.components[name]; return module.Component; } - _ensureComponent(name) { + async _ensureComponent(name) { let component = this._allComponents[name]; if (component) return component; @@ -37,14 +41,14 @@ var ComponentManager = class { if (Main.sessionMode.isLocked) return null; - let constructor = this._importComponent(name); + let constructor = await this._importComponent(name); component = new constructor(); this._allComponents[name] = component; return component; } - _enableComponent(name) { - let component = this._ensureComponent(name); + async _enableComponent(name) { + let component = await this._ensureComponent(name); if (component) component.enable(); }