From 51750cf153561b1aa9761cbcf2ca2c0b5cbfaa7a Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 1 Apr 2019 19:50:05 -0600 Subject: [PATCH] General cleanup of handling for WidgetMessaging instances When setting, delete the old one. Because delete checks if it exists first, we can safely call this. The change in FromWidgetPostMessageApi is just something noticed while debugging. --- src/FromWidgetPostMessageApi.js | 6 ++---- src/components/views/elements/AppTile.js | 4 +--- src/stores/ActiveWidgetStore.js | 2 ++ 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/FromWidgetPostMessageApi.js b/src/FromWidgetPostMessageApi.js index 4dd3ea6e6d..61c51d4a20 100644 --- a/src/FromWidgetPostMessageApi.js +++ b/src/FromWidgetPostMessageApi.js @@ -116,10 +116,8 @@ export default class FromWidgetPostMessageApi { const origin = u.protocol + '//' + u.host; if (this.widgetMessagingEndpoints && this.widgetMessagingEndpoints.length > 0) { const length = this.widgetMessagingEndpoints.length; - this.widgetMessagingEndpoints = this.widgetMessagingEndpoints. - filter(function(endpoint) { - return (endpoint.widgetId != widgetId || endpoint.endpointUrl != origin); - }); + this.widgetMessagingEndpoints = this.widgetMessagingEndpoints + .filter((endpoint) => endpoint.widgetId !== widgetId || endpoint.endpointUrl !== origin); return (length > this.widgetMessagingEndpoints.length); } return false; diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 708eb39bd3..959cee7ace 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -339,9 +339,7 @@ export default class AppTile extends React.Component { // Destroy the old widget messaging before starting it back up again. Some widgets // have startup routines that run when they are loaded, so we just need to reinitialize // the messaging for them. - if (ActiveWidgetStore.getWidgetMessaging(this.props.id)) { - ActiveWidgetStore.delWidgetMessaging(this.props.id); - } + ActiveWidgetStore.delWidgetMessaging(this.props.id); this._setupWidgetMessaging(); ActiveWidgetStore.setRoomId(this.props.id, this.props.room.roomId); diff --git a/src/stores/ActiveWidgetStore.js b/src/stores/ActiveWidgetStore.js index 1211195203..2d80a763d0 100644 --- a/src/stores/ActiveWidgetStore.js +++ b/src/stores/ActiveWidgetStore.js @@ -116,6 +116,8 @@ class ActiveWidgetStore extends EventEmitter { } setWidgetMessaging(widgetId, wm) { + // Stop any existing widget messaging first + this.delWidgetMessaging(widgetId); this._widgetMessagingByWidgetId[widgetId] = wm; this.emit('update'); }