Skip to content

Commit 4e6340a

Browse files
committed
extrapolate messageHeader to comp + fix color bug
1 parent e27c466 commit 4e6340a

2 files changed

Lines changed: 57 additions & 25 deletions

File tree

components/home/Message.tsx

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import MessageContent from './MessageContent';
1010
import DeleteMsgModal from '@/components/home/DeleteMsgModal';
1111
import { MiniProfile } from '../forms/MiniProfile';
1212
import { MessageWithServerProfile } from '@/types/dbtypes';
13+
import { MessageHeader } from './MessageHeader';
1314

1415
export default function Message({
1516
message,
@@ -42,7 +43,7 @@ export default function Message({
4243
chatMessage.current?.focus();
4344
}
4445

45-
const highestRoleWithColor = message.roles.find((role) => role.color !== null)?.color;
46+
const highestRoleWithColor = message.roles.find((role) => !!role.color)?.color;
4647

4748
if (highestRoleWithColor) {
4849
setMessageColor(`#${highestRoleWithColor}`);
@@ -69,30 +70,14 @@ export default function Message({
6970
<>
7071
<div className="px-2 pt-1 pb-1 flex flex-col">
7172
{!collapse_user && (
72-
<div className="flex-grow flex flex-row">
73-
<Tooltip id={message.profile.id} className='z-20 !w-12' clickable noArrow>
74-
<MiniProfile userId={message.profile.id} messageId={message.id} />
75-
</Tooltip>
76-
<UserIcon user={message.profile} />
77-
<div className="flex-grow flex items-center">
78-
<div
79-
className="text-xl font-semibold tracking-wider mr-2"
80-
data-tooltip-id={message.profile.id}
81-
style={{
82-
// Check for the first role that has a non-null color and use that
83-
color: messageColor,
84-
}}
85-
>
86-
{message.author.nickname || message.profile.username}
87-
</div>
88-
<div className="text-xs tracking-wider text-grey-300 mt-1">
89-
{displayTime}{' '}
90-
{message.is_edited && (
91-
<span className="text-gray-400">(edited)</span>
92-
)}
93-
</div>
94-
</div>
95-
</div>
73+
<MessageHeader
74+
profile={message.profile}
75+
server_user={message.author}
76+
message_id={message.id}
77+
message_color={messageColor}
78+
display_time={displayTime}
79+
edited={message.is_edited}
80+
/>
9681
)}
9782

9883
{/* TODO: figure out how to close modal on blur (cant use onBlur on the dialog cuz it takes up the entire screen meaning you can never focus off of it) */}

components/home/MessageHeader.tsx

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { ServerUser, User } from '@/types/dbtypes';
2+
import { Tooltip } from 'react-tooltip';
3+
import { MiniProfile } from '../forms/MiniProfile';
4+
import UserIcon from '../icons/UserIcon';
5+
6+
export function MessageHeader({
7+
profile,
8+
server_user,
9+
message_id,
10+
message_color,
11+
display_time,
12+
edited
13+
}: {
14+
profile: User,
15+
server_user: ServerUser,
16+
message_id: number,
17+
message_color: string,
18+
display_time: string,
19+
edited: boolean
20+
}) {
21+
return (
22+
<div className="flex-grow flex flex-row">
23+
<Tooltip id={profile.id} className='z-20 !w-12' clickable noArrow>
24+
<MiniProfile userId={profile.id} messageId={message_id} />
25+
</Tooltip>
26+
<UserIcon user={profile} />
27+
<div className="flex-grow flex items-center">
28+
<div
29+
className="text-xl font-semibold tracking-wider mr-2"
30+
data-tooltip-id={profile.id}
31+
style={{
32+
// Check for the first role that has a non-null color and use that
33+
color: message_color,
34+
}}
35+
>
36+
{server_user.nickname || profile.username}
37+
</div>
38+
<div className="text-xs tracking-wider text-grey-300 mt-1">
39+
{display_time}{' '}
40+
{edited && (
41+
<span className="text-gray-400">(edited)</span>
42+
)}
43+
</div>
44+
</div>
45+
</div>
46+
);
47+
}

0 commit comments

Comments
 (0)