message: Fix video call persisting when widget removed
  Fixes
  Type: defect
diff: @@ -137,6 +137,26 @@ export default class WidgetStore extends AsyncStoreWithClient<IState> {
  if (edited && !this.roomMap.has(room.roomId)) {
  this.roomMap.set(room.roomId, roomInfo);
  }
  +
  + // If a persistent widget is active, check to see if it's just been removed.
  + // If it has, it needs to destroyed otherwise unmounting the node won't kill it
  + const persistentWidgetId = ActiveWidgetStore.getPersistentWidgetId();
  + if (persistentWidgetId) {
  + if (
  + ActiveWidgetStore.getRoomId(persistentWidgetId) === room.roomId &&
  + !roomInfo.widgets.some(w => w.id === persistentWidgetId)
  + ) {
  + console.log(`Persistent widget ${persistentWidgetId} removed from room ${room.roomId}: destroying.`);
  + ActiveWidgetStore.destroyPersistentWidget(persistentWidgetId);
  + }
  + }
  +
  + /*if (
  + oldWidgetIds.includes(ActiveWidgetStore.getPersistentWidgetId()) &&
  + !roomInfo.widgets.map(w => w.id).includes(ActiveWidgetStore.getPersistentWidgetId())) {
  + ActiveWidgetStore.destroyPersistentWidget(ActiveWidgetStore.getPersistentWidgetId());
  + }*/
  +
  this.emit(room.roomId);
  }
  