Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 42 additions & 27 deletions src/pages/chat-list/[chatId]/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -335,18 +335,18 @@ function ChatRoom() {
// ex : 커넥션을 맺은 후 채팅을 보내다 토큰이 만료 됐을때
console.error('STOMP 에러 발생');
console.error('STOMP Error:', frame.headers.message);
// setErrorModalOpen(true);
setErrorModalOpen(true);
},
onDisconnect: () => {
console.error('연결끊김');
client.current.deactivate();
// router.back();
setErrorModalOpen(true);
},
onWebSocketError: event => {
// ex : 애초에 토큰이 만료된 상태로 커넥션을 시도할때
console.error('웹소켓 에러발생', event);
// client.current.deactivate();
// setErrorModalOpen(true);
client.current.deactivate();
setErrorModalOpen(true);
},
});
}
Expand Down Expand Up @@ -395,29 +395,37 @@ function ChatRoom() {
}
};

const DirectToChatListPage = (stateName: string) => {
if (stateName === 'ErrorModalOpen') {
setErrorModalOpen(false);
} else if (stateName === 'isReport') {
setIsReport(false);
}
const DirectToChatListPage = () => {
setErrorModalOpen(false);
router.replace('/chat-list');
};

useEffect(() => {
let timer: NodeJS.Timeout;

if (ErrorModalOpen || isDeliveryStart || isDeliveryFinish || isBlack) {
if (ErrorModalOpen || isBlack) {
timer = setTimeout(() => {
setErrorModalOpen(false);
setIsBlackModalOpen(false);
router.replace('/chat-list');
}, 2000);
}

return () => clearTimeout(timer);
}, [ErrorModalOpen, isBlack]);

useEffect(() => {
let timer: NodeJS.Timeout;

if (isDeliveryStart || isDeliveryFinish) {
timer = setTimeout(() => {
setIsDeliveryStart(false);
setIsDeliveryFinish(false);
router.replace('/chat-list');
}, 2000);
}

return () => clearTimeout(timer);
}, [ErrorModalOpen, isDeliveryStart, isDeliveryFinish, isBlack]);
}, [isDeliveryStart, isDeliveryFinish]);

const clickCancelQuit = () => {
setIsQuitModalOpen(false);
Expand Down Expand Up @@ -544,7 +552,7 @@ function ChatRoom() {
<CenterModal
hasDescription
closeModal={clickCancleBlackWhenReport}
title="차단되었습니다"
title="신고되었습니다"
handleClickYes={handleBlack}
childrens={<div>상대방을 차단할까요?</div>}
/>
Expand Down Expand Up @@ -634,29 +642,36 @@ function ChatRoom() {
<div />
)}
<ChattingHistory ref={scrollRef}>
{data?.pages[0] ? (
{data?.pages[0].messages.length > 0 ? (
data?.pages
.flatMap(page => page.messages)
.map((message, index, messages) => {
const nextMessage = messages[index - 1];
const nextMessageDate =
index !== 0 ? new Date(nextMessage.sendTime) : new Date();

const prevMessage = index > 0 ? messages[index - 1] : null;
const isNewDate =
index === 0
? false
: !isSameDay(
new Date(message.sendTime),
new Date(nextMessage.sendTime),
);
index === 0 ||
!isSameDay(
new Date(message.sendTime),
new Date(prevMessage.sendTime),
);

if (index !== 0) {
console.log(
isSameDay(
new Date(message.sendTime),
new Date(prevMessage.sendTime),
),
);
}

const isImage = message.messageType === 'IMAGE';

if (message.fromMe) {
return (
<>
{isNewDate && (
<TimeStamp>{formatTimeStamp(nextMessageDate)}</TimeStamp>
<TimeStamp>
{formatTimeStamp(new Date(message.sendTime))}
</TimeStamp>
)}
<MyMessageDiv key={message.messageId}>
{isImage ? (
Expand All @@ -678,7 +693,7 @@ function ChatRoom() {
return (
<>
{isNewDate && (
<TimeStamp>{formatTimeStamp(nextMessageDate)}</TimeStamp>
<TimeStamp>{formatTimeStamp(prevMessage)}</TimeStamp>
)}
<OpponentMessageDiv key={message.messageId}>
<OpponentProfileImage src={opponentProfileImage} />
Expand Down
10 changes: 5 additions & 5 deletions src/pages/chat-list/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -112,18 +112,18 @@ export default function ChatList() {
// ex : 커넥션을 맺은 후 채팅을 보내다 토큰이 만료 됐을때
console.error('STOMP 에러 발생');
console.error('STOMP Error:', frame.headers.message);
// setErrorModalOpen(true);
setErrorModalOpen(true);
},
onDisconnect: () => {
console.error('연결끊김');
client.current.deactivate();
router.back();
setErrorModalOpen(true);
},
onWebSocketError: event => {
// ex : 애초에 토큰이 만료된 상태로 커넥션을 시도할때
console.error('웹소켓 에러발생', event);
// client.current.deactivate();
// setErrorModalOpen(true);
client.current.deactivate();
setErrorModalOpen(true);
},
});
}
Expand Down Expand Up @@ -246,7 +246,7 @@ export default function ChatList() {
</Modal>
<PageHeader title="채팅" />
<ChattingList>
{!data?.pages[0].chatList ? (
{data?.pages[0].chatList.length === 0 ? (
<div>채팅방이 없습니다.</div>
) : (
data?.pages
Expand Down