From bda47a277084d801a937922a9c0d3c1e811126fc Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Thu, 27 Nov 2025 18:55:30 +0100 Subject: [PATCH] Improve messages appearance --- .../src/widgets/messages/RoomMessagesList.tsx | 67 +++++++++++++++++-- 1 file changed, 60 insertions(+), 7 deletions(-) diff --git a/matrixgw_frontend/src/widgets/messages/RoomMessagesList.tsx b/matrixgw_frontend/src/widgets/messages/RoomMessagesList.tsx index 1455a43..bd024f9 100644 --- a/matrixgw_frontend/src/widgets/messages/RoomMessagesList.tsx +++ b/matrixgw_frontend/src/widgets/messages/RoomMessagesList.tsx @@ -1,16 +1,34 @@ +import { Dialog, Typography } from "@mui/material"; import { MatrixApiEvent } from "../../api/matrix/MatrixApiEvent"; import type { UsersMap } from "../../api/matrix/MatrixApiProfile"; import type { Room } from "../../api/matrix/MatrixApiRoom"; import type { Message, RoomEventsManager } from "../../utils/RoomEventsManager"; import { AccountIcon } from "./AccountIcon"; +import React from "react"; export function RoomMessagesList(p: { room: Room; users: UsersMap; mgr: RoomEventsManager; }): React.ReactElement { + const messagesEndRef = React.createRef(); + + // Automatically scroll to bottom when number of messages change + React.useEffect(() => { + if (messagesEndRef) + messagesEndRef.current?.scrollIntoView({ behavior: "smooth" }); + }, [p.mgr.messages.length]); + return ( -
+
{p.mgr.messages.map((m, idx) => ( ))} + +
); } @@ -39,42 +59,75 @@ function RoomMessage(p: { previousFromSamePerson: boolean; firstMessageOfDay: boolean; }): React.ReactElement { + const [showImageFullScreen, setShowImageFullScreen] = React.useState(false); + + const closeImageFullScreen = () => setShowImageFullScreen(false); + const user = p.users.get(p.message.account); + return ( <> {p.firstMessageOfDay && ( -
+ {p.message.time_sent_dayjs.format("DD/MM/YYYY")} -
+ )} - {!p.previousFromSamePerson && user && ( + {(!p.previousFromSamePerson || p.firstMessageOfDay) && user && (
-   +     {user.display_name}
)} -
- {p.message.time_sent_dayjs.format("HH:mm")}{" "} +
+ +   {p.message.time_sent_dayjs.format("HH:mm")} + {" "} +     {p.message.image ? ( setShowImageFullScreen(true)} src={MatrixApiEvent.GetEventFileURL( p.room, p.message.event_id, true )} + style={{ + maxWidth: "200px", + }} /> ) : ( p.message.content )}
+ + + + ); }