Call Tile - Improve tile alignment in modern and bubble layout (#33478)

* Tile must have same indent as messages

* Align the call tiles between the bubbles
This commit is contained in:
R Midhun Suresh
2026-05-19 09:18:30 +00:00
committed by GitHub
parent 02b6520f09
commit 00ccc97c79
4 changed files with 55 additions and 3 deletions
@@ -1071,6 +1071,7 @@ export class UnwrappedEventTile extends React.Component<EventTileProps, IState>
isLeftAlignedBubbleMessage,
noBubbleEvent,
isSeeingThroughMessageHiddenForModeration,
isAlignedBetweenBubbles,
} = getEventDisplayInfo(
MatrixClientPeg.safeGet(),
this.props.mxEvent,
@@ -1118,6 +1119,7 @@ export class UnwrappedEventTile extends React.Component<EventTileProps, IState>
getEventTileClassState({
isBubbleMessage,
isLeftAlignedBubbleMessage,
isAlignedBetweenBubbles,
isEditing,
isInfoMessage,
isTwelveHour: this.props.isTwelveHour,
@@ -402,6 +402,8 @@ export interface EventTileClassState {
isBubbleMessage: boolean;
/** Whether the bubble tile is left-aligned. */
isLeftAlignedBubbleMessage: boolean;
/** Whether the event is aligned between the bubbles */
isAlignedBetweenBubbles: boolean;
/** Whether the event is currently being edited. */
isEditing: boolean;
/** Whether the event renders as an informational timeline item. */
@@ -444,6 +446,7 @@ export interface EventTileClassState {
export function getEventTileClassState({
isBubbleMessage,
isLeftAlignedBubbleMessage,
isAlignedBetweenBubbles,
isEditing,
isInfoMessage,
isTwelveHour,
@@ -466,6 +469,7 @@ export function getEventTileClassState({
return {
mx_EventTile_bubbleContainer: isBubbleMessage,
mx_EventTile_leftAlignedBubble: isLeftAlignedBubbleMessage,
mx_EventTile_alignedBetweenBubbles: isAlignedBetweenBubbles,
mx_EventTile: true,
mx_EventTile_isEditing: isEditing,
mx_EventTile_info: isInfoMessage,
+32 -2
View File
@@ -54,6 +54,7 @@ export function getEventDisplayInfo(
isLeftAlignedBubbleMessage: boolean;
noBubbleEvent: boolean;
isSeeingThroughMessageHiddenForModeration: boolean;
isAlignedBetweenBubbles: boolean;
} {
const content = mxEvent.getContent();
const msgtype = content.msgtype;
@@ -77,14 +78,16 @@ export function getEventDisplayInfo(
// Info messages are basically information about commands processed on a room
let isBubbleMessage =
eventType === EventType.RTCNotification ||
eventType.startsWith("m.key.verification") ||
(eventType === EventType.RoomMessage && msgtype?.startsWith("m.key.verification")) ||
eventType === EventType.RoomCreate ||
eventType === EventType.RoomEncryption ||
factory === JitsiEventFactory;
const isLeftAlignedBubbleMessage =
!isBubbleMessage && (eventType === EventType.CallInvite || ElementCallEventType.matches(eventType));
!isBubbleMessage &&
(eventType === EventType.RTCNotification ||
eventType === EventType.CallInvite ||
ElementCallEventType.matches(eventType));
let isInfoMessage = calcIsInfoMessage(eventType, content, isBubbleMessage, isLeftAlignedBubbleMessage);
// Some non-info messages want to be rendered in the appropriate bubble column but without the bubble background
const noBubbleEvent =
@@ -107,6 +110,32 @@ export function getEventDisplayInfo(
}
}
/*
TILE ALIGNED BETWEEN BUBBLES
Bubble
Bubble
*/
const isAlignedBetweenBubbles = eventType === EventType.RTCNotification;
return {
hasRenderer: !!factory,
isInfoMessage,
@@ -114,5 +143,6 @@ export function getEventDisplayInfo(
isLeftAlignedBubbleMessage,
noBubbleEvent,
isSeeingThroughMessageHiddenForModeration,
isAlignedBetweenBubbles,
};
}