Fix video call persisting when widget removed
Fixes https://github.com/vector-im/element-web/issues/15703 Type: defectpull/21833/head
parent
fbc5729daf
commit
657dcaf989
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue