Use dispatcher ref for unregister call.

This commit is contained in:
Richard Lewis 2018-01-17 15:40:04 +00:00
parent 614a10c6d3
commit 3331c8af27

View file

@ -43,7 +43,7 @@ export default class AppTile extends React.Component {
super(props); super(props);
this.state = this._getNewState(props); this.state = this._getNewState(props);
this._onAction = this._onAction.bind(this); this._onWidgetAction = this._onWidgetAction.bind(this);
this._onMessage = this._onMessage.bind(this); this._onMessage = this._onMessage.bind(this);
this._onLoaded = this._onLoaded.bind(this); this._onLoaded = this._onLoaded.bind(this);
this._onEditClick = this._onEditClick.bind(this); this._onEditClick = this._onEditClick.bind(this);
@ -161,7 +161,7 @@ export default class AppTile extends React.Component {
window.addEventListener('message', this._onMessage, false); window.addEventListener('message', this._onMessage, false);
// General event handler // General event handler
dis.register(this._onAction); this.dispatcherRef = dis.register(this._onWidgetAction);
} }
/** /**
@ -217,13 +217,19 @@ export default class AppTile extends React.Component {
} }
componentWillUnmount() { componentWillUnmount() {
// Widget action listeners
dis.unregister(this.dispatcherRef);
// Widget postMessage listeners
try { try {
this.widgetMessaging.stopListening(); if (this.widgetMessaging) {
this.widgetMessaging.removeEndpoint(this.props.id, this.props.url); this.widgetMessaging.stopListening();
this.widgetMessaging.removeEndpoint(this.props.id, this.props.url);
}
} catch (e) { } catch (e) {
console.error('Failed to stop listening for widgetMessaging events', e.message); console.error('Failed to stop listening for widgetMessaging events', e.message);
} }
dis.unregister(this._onAction); // Jitsi listener
window.removeEventListener('message', this._onMessage); window.removeEventListener('message', this._onMessage);
} }
@ -342,7 +348,7 @@ export default class AppTile extends React.Component {
this.setState({loading: false}); this.setState({loading: false});
} }
_onAction(payload) { _onWidgetAction(payload) {
if (payload.widgetId === this.props.id) { if (payload.widgetId === this.props.id) {
switch (payload.action) { switch (payload.action) {
case 'sticker_message': case 'sticker_message':