Skip to content
Snippets Groups Projects

design: 전송 버튼 nowrap 추가, 메시지에 사용자 이름 표시 관련 디자인 수정

Merged 심재엽 requested to merge develop into main
1 file
+ 34
25
Compare changes
  • Side-by-side
  • Inline
+ 34
25
@@ -824,7 +824,10 @@ function ChattingDetail() {
@@ -824,7 +824,10 @@ function ChattingDetail() {
<NoticeContainer isCollapsed={isNoticeCollapsed}>
<NoticeContainer isCollapsed={isNoticeCollapsed}>
{!isNoticeCollapsed ? (
{!isNoticeCollapsed ? (
<>
<>
<NoticeMessage isCollapsed={isNoticeCollapsed} onClick={handleNoticeClick}>
<NoticeMessage
 
isCollapsed={isNoticeCollapsed}
 
onClick={handleNoticeClick}
 
>
📢 {notice?.message}
📢 {notice?.message}
</NoticeMessage>
</NoticeMessage>
<NoticeSender>{notice?.sender}</NoticeSender>
<NoticeSender>{notice?.sender}</NoticeSender>
@@ -854,7 +857,7 @@ function ChattingDetail() {
@@ -854,7 +857,7 @@ function ChattingDetail() {
{/* 공지사항 상세 모달 */}
{/* 공지사항 상세 모달 */}
{isNoticeDetailModalOpen && (
{isNoticeDetailModalOpen && (
<ChattingNoticeDetailModal
<ChattingNoticeDetailModal
initialNotice={selectedNotice} // 처음 표시할 공지사항
initialNotice={selectedNotice}
notices={notices}
notices={notices}
onClose={closeNoticeDetailModal}
onClose={closeNoticeDetailModal}
onSelectNotice={(notice) => setSelectedNotice(notice)}
onSelectNotice={(notice) => setSelectedNotice(notice)}
@@ -897,7 +900,9 @@ function ChattingDetail() {
@@ -897,7 +900,9 @@ function ChattingDetail() {
theme="purple"
theme="purple"
onClick={handleArrowDown}
onClick={handleArrowDown}
state={
state={
currentSearchIndex < searchResults.length - 1 ? "default" : "disable"
currentSearchIndex < searchResults.length - 1
 
? "default"
 
: "disable"
}
}
icon={<FaArrowDown />}
icon={<FaArrowDown />}
/>
/>
@@ -926,33 +931,30 @@ function ChattingDetail() {
@@ -926,33 +931,30 @@ function ChattingDetail() {
const prevMessage = messages[index - 1];
const prevMessage = messages[index - 1];
const nextMessage = messages[index + 1];
const nextMessage = messages[index + 1];
// 이전 메시지와 비교
const sameSenderAsPrev =
const sameSenderAsPrev =
prevMessage && prevMessage.sender === messageData.sender;
prevMessage && prevMessage.sender === messageData.sender;
// 다음 메시지와 비교
const sameSenderAsNext =
const sameSenderAsNext =
nextMessage && nextMessage.sender === messageData.sender;
nextMessage && nextMessage.sender === messageData.sender;
// 현재 메시지의 타임스탬프
const messageTime = new Date(messageData.timestamp).toLocaleTimeString(
const messageTime = new Date(messageData.timestamp).toLocaleTimeString([], {
[],
hour: "2-digit",
{
minute: "2-digit",
});
// 이전 메시지의 타임스탬프
const prevMessageTime =
prevMessage &&
new Date(prevMessage.timestamp).toLocaleTimeString([], {
hour: "2-digit",
hour: "2-digit",
minute: "2-digit",
minute: "2-digit",
});
}
 
);
// 새로운 분 단위 메시지인지 확인
// const prevMessageTime =
const isNewMinute = !prevMessage || messageTime !== prevMessageTime;
// prevMessage &&
 
// new Date(prevMessage.timestamp).toLocaleTimeString([], {
 
// hour: "2-digit",
 
// minute: "2-digit",
 
// });
// 마지막 메시지인지 확인
// const isNewMinute = !prevMessage || messageTime !== prevMessageTime;
const isLastMessageInGroup = !sameSenderAsNext || messageTime !== nextMessage.timestamp;
const isLastMessageInGroup = !sameSenderAsNext;
 
const isDifferentUserFromPrev = !sameSenderAsPrev;
if (messageData.type === "join" || messageData.type === "leave") {
if (messageData.type === "join" || messageData.type === "leave") {
return (
return (
@@ -960,12 +962,11 @@ function ChattingDetail() {
@@ -960,12 +962,11 @@ function ChattingDetail() {
);
);
}
}
// 읽지 않은 사람 수
const unreadCountValue = unreadCount(messageData._id);
const unreadCountValue = unreadCount(messageData._id);
return (
return (
<div key={index}>
<div key={index}>
{isNewMinute && !isMine && (
{isDifferentUserFromPrev && !isMine && (
<strong
<strong
style={{
style={{
display: "block",
display: "block",
@@ -977,10 +978,15 @@ function ChattingDetail() {
@@ -977,10 +978,15 @@ function ChattingDetail() {
{messageData.sender}
{messageData.sender}
</strong>
</strong>
)}
)}
 
<MessageContainer
<MessageContainer
isMine={isMine}
isMine={isMine}
highlighted={searchResults[currentSearchIndex] === messageData}
highlighted={searchResults[currentSearchIndex] === messageData}
ref={searchResults[currentSearchIndex] === messageData ? highlightedMessageRef : null}
ref={
 
searchResults[currentSearchIndex] === messageData
 
? highlightedMessageRef
 
: null
 
}
style={{
style={{
marginTop: sameSenderAsPrev ? "-16px" : "8px",
marginTop: sameSenderAsPrev ? "-16px" : "8px",
justifyContent: isMine ? "flex-end" : "flex-start",
justifyContent: isMine ? "flex-end" : "flex-start",
@@ -988,7 +994,9 @@ function ChattingDetail() {
@@ -988,7 +994,9 @@ function ChattingDetail() {
>
>
<MessageBubble
<MessageBubble
isMine={isMine}
isMine={isMine}
highlighted={searchResults[currentSearchIndex] === messageData}
highlighted={
 
searchResults[currentSearchIndex] === messageData
 
}
onContextMenu={(e) => handleRightClick(e, messageData)}
onContextMenu={(e) => handleRightClick(e, messageData)}
style={{
style={{
textAlign: isMine ? "right" : "left",
textAlign: isMine ? "right" : "left",
@@ -1013,6 +1021,7 @@ function ChattingDetail() {
@@ -1013,6 +1021,7 @@ function ChattingDetail() {
{unreadCountValue > 0 && `${unreadCountValue}`}
{unreadCountValue > 0 && `${unreadCountValue}`}
</span>
</span>
</div>
</div>
 
{isLastMessageInGroup && (
{isLastMessageInGroup && (
<MessageTimestamp isMine={isMine}>
<MessageTimestamp isMine={isMine}>
{messageTime}
{messageTime}
@@ -1047,7 +1056,7 @@ function ChattingDetail() {
@@ -1047,7 +1056,7 @@ function ChattingDetail() {
</Button>
</Button>
</ChatRoomInput>
</ChatRoomInput>
</ChatRoomContainer>
</ChatRoomContainer>
);
);
}
}
export default ChattingDetail;
export default ChattingDetail;
 
\ No newline at end of file
Loading