From 7b17ea1fa52a2f4758f1bf4ff7d6b13fa3dd8fe4 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 14 Aug 2019 23:15:49 +0100 Subject: [PATCH] Fix Persisted Widgets (Jitsi) randomly closing on room change Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/views/elements/AppTile.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 38830d78f26..a9239303b1c 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -1,6 +1,7 @@ -/** +/* Copyright 2017 Vector Creations Ltd Copyright 2018 New Vector Ltd +Copyright 2019 Michael Telatynski <7t3chguy@gmail.com> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,8 +16,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -'use strict'; - import url from 'url'; import qs from 'querystring'; import React from 'react'; @@ -155,8 +154,9 @@ export default class AppTile extends React.Component { // Widget action listeners 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 (!ActiveWidgetStore.getWidgetPersistence(this.props.id)) { + if (canPersist && !ActiveWidgetStore.getWidgetPersistence(this.props.id)) { ActiveWidgetStore.destroyPersistentWidget(); const PersistedElement = sdk.getComponent("elements.PersistedElement"); PersistedElement.destroyElement(this._persistKey); @@ -575,11 +575,10 @@ export default class AppTile extends React.Component { src={this._getSafeUrl()} allowFullScreen="true" sandbox={sandboxFlags} - onLoad={this._onLoaded} - > + onLoad={this._onLoaded} /> ); - // if the widget would be allowed to remian on screen, we must put it in + // if the widget would be allowed to remain on screen, we must put it in // a PersistedElement from the get-go, otherwise the iframe will be // re-mounted later when we do. if (this.props.whitelistCapabilities.includes('m.always_on_screen')) {