-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.tsx
More file actions
57 lines (52 loc) · 1.51 KB
/
index.tsx
File metadata and controls
57 lines (52 loc) · 1.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import { memo, ReactNode } from 'react';
import theme from '@styles/theme';
import type { RcvdMessageProps } from './dto';
import { FirstMessageLayout, UserImage, UsernameText, MessageBox, Message, TimeWrapper, MessageLayout } from './styles';
const RcvdMessage: React.FC<RcvdMessageProps & { onClickProfile?: () => void; children?: ReactNode }> = memo(
({
fromUserNickname,
profilePictureUrl,
content,
isProfileImageVisible,
isSenderChanged,
isTimeVisible,
formattedTime,
onClickProfile,
children,
}) => {
if (isProfileImageVisible) {
return (
<FirstMessageLayout $isSenderChanged={isSenderChanged}>
<UserImage onClick={onClickProfile} src={profilePictureUrl} alt="프로필 사진" />
<div>
<UsernameText
onClick={onClickProfile}
$textTheme={{ style: 'body2-regular' }}
color={theme.colors.text.primary}
>
{fromUserNickname}
</UsernameText>
<MessageBox>
<Message $textTheme={{ style: 'body2-regular' }} color={theme.colors.text.primary}>
{children}
{content}
</Message>
{isTimeVisible && <TimeWrapper>{formattedTime}</TimeWrapper>}
</MessageBox>
</div>
</FirstMessageLayout>
);
} else {
return (
<MessageLayout>
<Message $textTheme={{ style: 'body2-regular' }} color={theme.colors.text.primary}>
{children}
{content}
</Message>
{isTimeVisible && <TimeWrapper>{formattedTime}</TimeWrapper>}
</MessageLayout>
);
}
},
);
export default RcvdMessage;