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,9 +11,11 @@ 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"}`}>
{!hideName && (
<div <div
className={`text-${ className={`text-${
isSelf ? "gray-700" : accentColor + "-800 text-ts-" + accentColor isSelf ? "gray-700" : accentColor + "-800 text-ts-" + accentColor
@@ -20,6 +23,7 @@ export const ChatMessage = ({
> >
{name} {name}
</div> </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) => {
const hideName =
index >= 1 && allMsg[index - 1].name === message.name;
return (
<ChatMessage <ChatMessage
key={index} key={index}
hideName={hideName}
name={message.name} name={message.name}
message={message.message} message={message.message}
isSelf={message.isSelf} isSelf={message.isSelf}
accentColor={accentColor} accentColor={accentColor}
/> />
))} );
})}
</div> </div>
</div> </div>
<ChatMessageInput <ChatMessageInput