Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit a55482b

Browse files
Don't show replaced calls in the timeline (#7452)
* Don't show replaced calls in the timeline Signed-off-by: Šimon Brandner <[email protected]> * Revert changes to CallEvent Signed-off-by: Šimon Brandner <[email protected]> * Add option to force hide event Signed-off-by: Šimon Brandner <[email protected]> * Hide replaced calls Signed-off-by: Šimon Brandner <[email protected]>
1 parent 991257c commit a55482b

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

src/components/views/messages/CallEvent.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export default class CallEvent extends React.PureComponent<IProps, IState> {
6464
this.props.callEventGrouper.addListener(CallEventGrouperEvent.LengthChanged, this.onLengthChanged);
6565

6666
this.resizeObserver = new ResizeObserver(this.resizeObserverCallback);
67-
this.resizeObserver.observe(this.wrapperElement.current);
67+
this.wrapperElement.current && this.resizeObserver.observe(this.wrapperElement.current);
6868
}
6969

7070
componentWillUnmount() {
@@ -258,7 +258,7 @@ export default class CallEvent extends React.PureComponent<IProps, IState> {
258258
);
259259
}
260260

261-
render() {
261+
public render(): JSX.Element {
262262
const event = this.props.mxEvent;
263263
const sender = event.sender ? event.sender.name : event.getSender();
264264
const isVoice = this.props.callEventGrouper.isVoice;

src/components/views/rooms/EventTile.tsx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import { RoomMember } from "matrix-js-sdk/src/models/room-member";
2424
import { Thread, ThreadEvent } from 'matrix-js-sdk/src/models/thread';
2525
import { logger } from "matrix-js-sdk/src/logger";
2626
import { NotificationCountType, Room } from 'matrix-js-sdk/src/models/room';
27+
import { CallErrorCode } from "matrix-js-sdk/src/webrtc/call";
2728
import { M_POLL_START } from "matrix-events-sdk";
2829

2930
import ReplyChain from "../elements/ReplyChain";
@@ -1097,18 +1098,29 @@ export default class EventTile extends React.Component<IProps, IState> {
10971098
});
10981099
};
10991100

1101+
/**
1102+
* In some cases we can't use shouldHideEvent() since whether or not we hide
1103+
* an event depends on other things that the event itself
1104+
* @returns {boolean} true if event should be hidden
1105+
*/
1106+
private shouldHideEvent(): boolean {
1107+
// If the call was replaced we don't render anything since we render the other call
1108+
if (this.props.callEventGrouper?.hangupReason === CallErrorCode.Replaced) return true;
1109+
1110+
return false;
1111+
}
1112+
11001113
render() {
11011114
const msgtype = this.props.mxEvent.getContent().msgtype;
11021115
const eventType = this.props.mxEvent.getType() as EventType;
1103-
const eventDisplayInfo = getEventDisplayInfo(this.props.mxEvent);
11041116
const {
11051117
tileHandler,
11061118
isBubbleMessage,
11071119
isInfoMessage,
11081120
isLeftAlignedBubbleMessage,
11091121
noBubbleEvent,
11101122
isSeeingThroughMessageHiddenForModeration,
1111-
} = eventDisplayInfo;
1123+
} = getEventDisplayInfo(this.props.mxEvent, this.shouldHideEvent());
11121124
const { isQuoteExpanded } = this.state;
11131125

11141126
// This shouldn't happen: the caller should check we support this type

src/utils/EventUtils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ export function getMessageModerationState(mxEvent: MatrixEvent): MessageModerati
177177
return MessageModerationState.HIDDEN_TO_CURRENT_USER;
178178
}
179179

180-
export function getEventDisplayInfo(mxEvent: MatrixEvent): {
180+
export function getEventDisplayInfo(mxEvent: MatrixEvent, hideEvent?: boolean): {
181181
isInfoMessage: boolean;
182182
tileHandler: string;
183183
isBubbleMessage: boolean;
@@ -245,7 +245,7 @@ export function getEventDisplayInfo(mxEvent: MatrixEvent): {
245245
// source tile when there's no regular tile for an event and also for
246246
// replace relations (which otherwise would display as a confusing
247247
// duplicate of the thing they are replacing).
248-
if (SettingsStore.getValue("showHiddenEventsInTimeline") && !haveTileForEvent(mxEvent)) {
248+
if ((hideEvent || !haveTileForEvent(mxEvent)) && SettingsStore.getValue("showHiddenEventsInTimeline")) {
249249
tileHandler = "messages.ViewSourceEvent";
250250
isBubbleMessage = false;
251251
// Reuse info message avatar and sender profile styling

0 commit comments

Comments
 (0)