Only Destroy the expected persistent widget, not *ANY*

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
pull/21833/head
Michael Telatynski 2019-08-22 16:57:51 +01:00
parent 7b17ea1fa5
commit cd6a980c7e
2 changed files with 6 additions and 6 deletions

View File

@ -154,10 +154,9 @@ export default class AppTile extends React.Component {
// Widget action listeners // Widget action listeners
dis.unregister(this.dispatcherRef); dis.unregister(this.dispatcherRef);
const canPersist = this.props.whitelistCapabilities.includes('m.always_on_screen');
// if it's not remaining on screen, get rid of the PersistedElement container // if it's not remaining on screen, get rid of the PersistedElement container
if (canPersist && !ActiveWidgetStore.getWidgetPersistence(this.props.id)) { if (!ActiveWidgetStore.getWidgetPersistence(this.props.id)) {
ActiveWidgetStore.destroyPersistentWidget(); ActiveWidgetStore.destroyPersistentWidget(this.props.id);
const PersistedElement = sdk.getComponent("elements.PersistedElement"); const PersistedElement = sdk.getComponent("elements.PersistedElement");
PersistedElement.destroyElement(this._persistKey); PersistedElement.destroyElement(this._persistKey);
} }
@ -429,7 +428,7 @@ export default class AppTile extends React.Component {
this.setState({hasPermissionToLoad: false}); this.setState({hasPermissionToLoad: false});
// Force the widget to be non-persistent // Force the widget to be non-persistent
ActiveWidgetStore.destroyPersistentWidget(); ActiveWidgetStore.destroyPersistentWidget(this.props.id);
const PersistedElement = sdk.getComponent("elements.PersistedElement"); const PersistedElement = sdk.getComponent("elements.PersistedElement");
PersistedElement.destroyElement(this._persistKey); PersistedElement.destroyElement(this._persistKey);
} }

View File

@ -67,11 +67,12 @@ class ActiveWidgetStore extends EventEmitter {
if (ev.getType() !== 'im.vector.modular.widgets') return; if (ev.getType() !== 'im.vector.modular.widgets') return;
if (ev.getStateKey() === this._persistentWidgetId) { if (ev.getStateKey() === this._persistentWidgetId) {
this.destroyPersistentWidget(); this.destroyPersistentWidget(this._persistentWidgetId);
} }
} }
destroyPersistentWidget() { destroyPersistentWidget(id) {
if (id !== this._persistentWidgetId) return;
const toDeleteId = this._persistentWidgetId; const toDeleteId = this._persistentWidgetId;
this.setWidgetPersistence(toDeleteId, false); this.setWidgetPersistence(toDeleteId, false);