Collapse messages from same sender to save on vertical space (#61)

This commit is contained in:
lukasIO
2024-05-29 19:12:34 +02:00
committed by GitHub
parent d62ddaf80d
commit 2359474e41
2 changed files with 28 additions and 18 deletions

View File

@@ -3,6 +3,7 @@ type ChatMessageProps = {
accentColor: string; accentColor: string;
name: string; name: string;
isSelf: boolean; isSelf: boolean;
hideName?: boolean;
}; };
export const ChatMessage = ({ export const ChatMessage = ({
@@ -10,16 +11,19 @@ export const ChatMessage = ({
message, message,
accentColor, accentColor,
isSelf, isSelf,
hideName,
}: ChatMessageProps) => { }: ChatMessageProps) => {
return ( return (
<div className="flex flex-col gap-1"> <div className={`flex flex-col gap-1 ${hideName ? "pt-0" : "pt-6"}`}>
<div {!hideName && (
className={`text-${ <div
isSelf ? "gray-700" : accentColor + "-800 text-ts-" + accentColor className={`text-${
} uppercase text-xs`} isSelf ? "gray-700" : accentColor + "-800 text-ts-" + accentColor
> } uppercase text-xs`}
{name} >
</div> {name}
</div>
)}
<div <div
className={`pr-4 text-${ className={`pr-4 text-${
isSelf ? "gray-300" : accentColor + "-500" isSelf ? "gray-300" : accentColor + "-500"

View File

@@ -35,16 +35,22 @@ export const ChatTile = ({ messages, accentColor, onSend }: ChatTileProps) => {
height: `calc(100% - ${inputHeight}px)`, height: `calc(100% - ${inputHeight}px)`,
}} }}
> >
<div className="flex flex-col min-h-full justify-end gap-6"> <div className="flex flex-col min-h-full justify-end">
{messages.map((message, index) => ( {messages.map((message, index, allMsg) => {
<ChatMessage const hideName =
key={index} index >= 1 && allMsg[index - 1].name === message.name;
name={message.name}
message={message.message} return (
isSelf={message.isSelf} <ChatMessage
accentColor={accentColor} key={index}
/> hideName={hideName}
))} name={message.name}
message={message.message}
isSelf={message.isSelf}
accentColor={accentColor}
/>
);
})}
</div> </div>
</div> </div>
<ChatMessageInput <ChatMessageInput