diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index 176aaf95a3..d3d5835dae 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -147,7 +147,7 @@ interface IProps { // TODO type things better config: Record; serverConfig?: ValidatedServerConfig; ConferenceHandler?: any; - onNewScreen: (string) => void; + onNewScreen: (screen: string, replaceLast: boolean) => void; enableGuest?: boolean; // the queryParams extracted from the [real] query-string of the URI realQueryParams?: Record; @@ -886,6 +886,9 @@ export default class MatrixChat extends React.PureComponent { } } + // If we are redirecting to a Room Alias and it is for the room we already showing then replace history item + const replaceLast = presentedId[0] === "#" && roomInfo.room_id === this.state.currentRoomId; + if (roomInfo.event_id && roomInfo.highlighted) { presentedId += "/" + roomInfo.event_id; } @@ -898,7 +901,7 @@ export default class MatrixChat extends React.PureComponent { viaServers: roomInfo.via_servers, ready: true, }, () => { - this.notifyNewScreen('room/' + presentedId); + this.notifyNewScreen('room/' + presentedId, replaceLast); }); }); } @@ -1699,9 +1702,9 @@ export default class MatrixChat extends React.PureComponent { } } - notifyNewScreen(screen: string) { + notifyNewScreen(screen: string, replaceLast = false) { if (this.props.onNewScreen) { - this.props.onNewScreen(screen); + this.props.onNewScreen(screen, replaceLast); } this.setPageSubtitle(); }