Skip to content

Commit bef18ee

Browse files
tifsynirii00
authored andcommitted
refactor: PR 리뷰를 반영한 리팩토링 (#70)
* refactor: 읽지 않은 편지 수 조회 기능 리팩토링 * rename: NewLetterModal 을 UnreadLetterModal로 파일명 및 함수명 변경 * fix: 읽지 않은 편지가 존재할 때 다른 우체통 이미지 보여주도록 수정 * fix: 오고 있는 편지 모달에서 편지 항목 눌렀을 때 보드로 이동하는 에러 해결
1 parent 34a80e7 commit bef18ee

File tree

6 files changed

+24
-23
lines changed

6 files changed

+24
-23
lines changed

src/apis/unreadLetters.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,5 @@
11
import client from './client';
22

3-
export interface UnreadLetters {
4-
data: number;
5-
message: string;
6-
timestamp: string;
7-
}
8-
93
export const getUnreadLettersCount = async (): Promise<UnreadLetters> => {
104
try {
115
const response = await client.get('/api/letters/unread/count');

src/pages/Home/components/GoToLetterBox.tsx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,24 @@
1+
import { useState, useEffect } from 'react';
12
import { Link } from 'react-router';
23

4+
import { getUnreadLettersCount } from '@/apis/unreadLetters';
35
import goToLetterBoxNewLetters from '@/assets/images/go-to-letter-box-new-letters.png';
46
import goToLetterBox from '@/assets/images/go-to-letter-box.png';
5-
import { useIncomingLettersStore } from '@/stores/incomingLettersStore';
67

78
const GoToLetterBox = () => {
8-
const arrivedCount = useIncomingLettersStore((state) => state.arrivedCount);
9+
const [arrivedCount, setArrivedCount] = useState<number>(0);
10+
11+
useEffect(() => {
12+
const fetchUnreadCount = async () => {
13+
try {
14+
const result = await getUnreadLettersCount();
15+
setArrivedCount(result.data);
16+
} catch (error) {
17+
console.error('❌ 안 읽은 편지 개수를 불러오는 데 실패했습니다:', error);
18+
}
19+
};
20+
fetchUnreadCount();
21+
}, []);
922

1023
return (
1124
<div className="absolute bottom-15 left-5 z-9 flex">

src/pages/Home/components/HomeRight.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { getUnreadLettersCount } from '@/apis/unreadLetters';
55
import FloatingLetters from './FloatingLetters';
66
import GoToLetterBoard from './GoToLetterBoard';
77
import GoToLetterBox from './GoToLetterBox';
8-
import NewLetterModal from './NewLetterModal';
8+
import UnreadLetterModal from './UnreadLetterModal';
99

1010
const HomeRight = () => {
1111
const [arrivedCount, setArrivedCount] = useState<number>(0);
@@ -27,7 +27,7 @@ const HomeRight = () => {
2727
{arrivedCount !== 0 && <FloatingLetters />}
2828
<GoToLetterBox />
2929
<GoToLetterBoard />
30-
{arrivedCount !== 0 && <NewLetterModal />}
30+
{arrivedCount !== 0 && <UnreadLetterModal />}
3131
</div>
3232
);
3333
};

src/pages/Home/components/ShowIncomingLettersModal.tsx

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React, { useEffect } from 'react';
2-
import { useNavigate } from 'react-router';
32

43
import ModalBackgroundWrapper from '@/components/ModalBackgroundWrapper';
54
import ModalOverlay from '@/components/ModalOverlay';
@@ -11,19 +10,11 @@ interface ShowIncomingLettersModalProps {
1110
}
1211

1312
const ShowIncomingLettersModal = ({ onClose }: ShowIncomingLettersModalProps) => {
14-
const navigate = useNavigate();
15-
16-
const handleNavigation = (incomingId: number) => {
17-
navigate(`/board/letter/${incomingId}`, {
18-
state: { isShareLetterPreview: false },
19-
});
20-
};
21-
2213
const { data, fetchIncomingLetters } = useIncomingLettersStore();
2314

2415
useEffect(() => {
2516
fetchIncomingLetters();
26-
}, []);
17+
}, [fetchIncomingLetters]);
2718

2819
return (
2920
<ModalOverlay closeOnOutsideClick onClose={onClose}>
@@ -42,7 +33,6 @@ const ShowIncomingLettersModal = ({ onClose }: ShowIncomingLettersModalProps) =>
4233
<div
4334
className="text-gray-80 body-m flex h-10 w-full items-center justify-between gap-1 rounded-lg bg-white p-3"
4435
key={letter.letterId}
45-
onClick={() => handleNavigation(letter.letterId)}
4636
>
4737
<p className="truncate">{letter.title}</p>
4838
<p>{letter.remainingTime}</p>

src/pages/Home/components/NewLetterModal.tsx renamed to src/pages/Home/components/UnreadLetterModal.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { useEffect, useState } from 'react';
22

33
import { getUnreadLettersCount } from '@/apis/unreadLetters';
44

5-
const NewLetterModal = () => {
5+
const UnreadLetterModal = () => {
66
const [arrivedCount, setArrivedCount] = useState<number>(0);
77

88
useEffect(() => {
@@ -24,4 +24,4 @@ const NewLetterModal = () => {
2424
);
2525
};
2626

27-
export default NewLetterModal;
27+
export default UnreadLetterModal;

src/types/unreadLetters.d.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
interface UnreadLetters {
2+
data: number;
3+
message: string;
4+
}

0 commit comments

Comments
 (0)