Display a message when the conversation is empty

This commit is contained in:
2025-12-02 13:59:14 +01:00
parent 118b73fce9
commit ab136ef6d0

View File

@@ -40,16 +40,34 @@ export function RoomMessagesList(p: {
users: UsersMap; users: UsersMap;
manager: RoomEventsManager; manager: RoomEventsManager;
}): React.ReactElement { }): React.ReactElement {
const listContainerRef = React.createRef<HTMLDivElement>();
const messagesEndRef = React.createRef<HTMLDivElement>(); const messagesEndRef = React.createRef<HTMLDivElement>();
// Automatically scroll to bottom when number of messages change // Automatically scroll to bottom when number of messages change
React.useEffect(() => { React.useEffect(() => {
if (messagesEndRef) if (messagesEndRef)
messagesEndRef.current?.scrollIntoView({ behavior: "instant" }); messagesEndRef.current?.scrollIntoView({ behavior: "instant" });
}, [p.manager.messages.length]); }, [p.manager.messages.at(-1)?.event_id]);
// Watch scroll to detect when user reach the top to load older messages
const handleScroll = () => {
if (!listContainerRef.current) return;
const { scrollTop } = listContainerRef.current;
if (scrollTop !== 0) {
return;
}
console.log("reached top");
// TODO : load old messages
// TODO : block when user reached begining of conversation
};
return ( return (
<div <div
onScroll={handleScroll}
ref={listContainerRef}
style={{ style={{
flex: 1, flex: 1,
width: "100%", width: "100%",
@@ -58,6 +76,20 @@ export function RoomMessagesList(p: {
paddingLeft: "20px", paddingLeft: "20px",
}} }}
> >
{/* Empty conversation notice */}
{p.manager.messages.length === 0 && (
<div
style={{
height: "100%",
display: "flex",
alignItems: "center",
justifyContent: "center",
}}
>
No message in this conversation yet!
</div>
)}
{p.manager.messages.map((m, idx) => ( {p.manager.messages.map((m, idx) => (
<RoomMessage <RoomMessage
key={m.event_id} key={m.event_id}