diff --git a/src/stores/RightPanelStore.ts b/src/stores/RightPanelStore.ts index 2bad0572b1..03f12832fd 100644 --- a/src/stores/RightPanelStore.ts +++ b/src/stores/RightPanelStore.ts @@ -22,6 +22,7 @@ import {RightPanelPhases, RIGHT_PANEL_PHASES_NO_ARGS} from "./RightPanelStorePha import {ActionPayload} from "../dispatcher/payloads"; import {Action} from '../dispatcher/actions'; import { SettingLevel } from "../settings/SettingLevel"; +import RoomViewStore from './RoomViewStore'; interface RightPanelStoreState { // Whether or not to show the right panel at all. We split out rooms and groups @@ -147,6 +148,8 @@ export default class RightPanelStore extends Store { switch (payload.action) { case 'view_room': case 'view_group': + if (payload.room_id === RoomViewStore.getRoomId()) break; // skip this transition, probably a permalink + // Reset to the member list if we're viewing member info if (MEMBER_INFO_PHASES.includes(this.state.lastRoomPhase)) { this.setState({lastRoomPhase: RightPanelPhases.RoomMemberList, lastRoomPhaseParams: {}}); diff --git a/test/end-to-end-tests/src/usecases/rightpanel.js b/test/end-to-end-tests/src/usecases/rightpanel.js index ae6bb2c771..00a8cde5a6 100644 --- a/test/end-to-end-tests/src/usecases/rightpanel.js +++ b/test/end-to-end-tests/src/usecases/rightpanel.js @@ -32,7 +32,11 @@ module.exports.goBackToRoomSummaryCard = async function(session) { // Sometimes our tests have this opened to MemberInfo await backButton.click(); } catch (e) { - break; // stop trying to go further back + // explicitly check for TimeoutError as this sometimes returned + // `Error: Node is detached from document` due to a re-render race or similar + if (e.name === "TimeoutError") { + break; // stop trying to go further back + } } } };