aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-ui/src/app/ng2')
-rw-r--r--catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.ts13
-rw-r--r--catalog-ui/src/app/ng2/services/event-bus.service.ts17
2 files changed, 23 insertions, 7 deletions
diff --git a/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.ts b/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.ts
index 2ba784727f..4759721034 100644
--- a/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.ts
+++ b/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.ts
@@ -43,13 +43,16 @@ export class PluginFrameComponent implements OnInit {
this.pluginUrl += this.urlSearchParams.toString();
}
- this.eventBusService.on((eventData) => {
+ let readyEvent = (eventData) => {
if (eventData.originId === this.plugin.pluginId) {
if (eventData.type == "READY") {
this.onLoadingDone.emit();
+ this.eventBusService.off(readyEvent)
}
}
- });
+ };
+
+ this.eventBusService.on(readyEvent);
// Listening to the stateChangeStart event in order to notify the plugin about it being closed
// before moving to a new state
@@ -58,11 +61,11 @@ export class PluginFrameComponent implements OnInit {
if (!this.isClosed) {
event.preventDefault();
- this.eventBusService.notify("WINDOW_OUT");
+ this.eventBusService.notify("WINDOW_OUT").subscribe(() => {
+ this.isClosed = true;
- this.isClosed = true;
+ this.eventBusService.unregister(this.plugin.pluginId);
- setTimeout(() => {
this.$state.go(toState.name, toParams);
});
}
diff --git a/catalog-ui/src/app/ng2/services/event-bus.service.ts b/catalog-ui/src/app/ng2/services/event-bus.service.ts
index 7730a77f41..438437d193 100644
--- a/catalog-ui/src/app/ng2/services/event-bus.service.ts
+++ b/catalog-ui/src/app/ng2/services/event-bus.service.ts
@@ -11,6 +11,18 @@ export class EventBusService extends BasePubSub {
protected handlePluginRegistration(eventData: IPubSubEvent, event: any) {
if (eventData.type === 'PLUGIN_REGISTER') {
this.register(eventData.data.pluginId, event.source, event.origin);
+
+ let newEventsList = [];
+
+ if (this.eventsToWait.has(eventData.data.pluginId)) {
+ newEventsList = _.union(this.eventsToWait.get(eventData.data.pluginId), eventData.data.eventsToWait);
+ }
+ else {
+ newEventsList = eventData.data.eventsToWait;
+ }
+
+ this.eventsToWait.set(eventData.data.pluginId, newEventsList);
+
} else if (eventData.type === 'PLUGIN_UNREGISTER') {
this.unregister(eventData.data.pluginId);
}
@@ -21,8 +33,9 @@ export class EventBusService extends BasePubSub {
pluginId: pluginId
};
- this.notify('PLUGIN_CLOSE', unregisterData);
- super.unregister(pluginId);
+ this.notify('PLUGIN_CLOSE', unregisterData).subscribe(() => {
+ super.unregister(pluginId);
+ });
}
protected onMessage(event: any) {