Skip to content

Commit 911533d

Browse files
authored
feat: 읽지 않은 편지 수 조회 기능 구현 (#66)
1 parent fc4c223 commit 911533d

File tree

3 files changed

+48
-8
lines changed

3 files changed

+48
-8
lines changed

src/apis/unreadLetters.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import client from './client';
2+
3+
export interface UnreadLetters {
4+
data: number;
5+
message: string;
6+
timestamp: string;
7+
}
8+
9+
export const getUnreadLettersCount = async (): Promise<UnreadLetters> => {
10+
try {
11+
const response = await client.get('/api/letters/unread/count');
12+
console.log('📩 안 읽은 편지 개수 데이터', response);
13+
return response.data;
14+
} catch (error) {
15+
console.error('❌안 읽은 편지 개수를 받아오던 중 에러가 발생했습니다', error);
16+
throw new Error('안 읽은 편지 개수 조회 실패');
17+
}
18+
};

src/pages/Home/components/HomeRight.tsx

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,26 @@
1-
import { useEffect } from 'react';
1+
import { useEffect, useState } from 'react';
22

3-
import { useIncomingLettersStore } from '@/stores/incomingLettersStore';
3+
import { getUnreadLettersCount } from '@/apis/unreadLetters';
44

55
import FloatingLetters from './FloatingLetters';
66
import GoToLetterBoard from './GoToLetterBoard';
77
import GoToLetterBox from './GoToLetterBox';
88
import NewLetterModal from './NewLetterModal';
99

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

1625
return (
1726
<div className="flex h-screen w-full max-w-150 min-w-[300px] flex-shrink-0 grow snap-start flex-col items-center overflow-x-hidden pt-5">

src/pages/Home/components/NewLetterModal.tsx

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,21 @@
1-
import { useIncomingLettersStore } from '@/stores/incomingLettersStore';
1+
import { useEffect, useState } from 'react';
2+
3+
import { getUnreadLettersCount } from '@/apis/unreadLetters';
24

3-
//TODO: 내 편지함 상세 조회에서 해당 편지를 조회하면 arrivedCount가 1 감소하도록
45
const NewLetterModal = () => {
5-
const arrivedCount = useIncomingLettersStore((state) => state.arrivedCount);
6+
const [arrivedCount, setArrivedCount] = useState<number>(0);
7+
8+
useEffect(() => {
9+
const fetchUnreadCount = async () => {
10+
try {
11+
const result = await getUnreadLettersCount();
12+
setArrivedCount(result.data);
13+
} catch (error) {
14+
console.error('❌ 안 읽은 편지 개수를 불러오는 데 실패했습니다:', error);
15+
}
16+
};
17+
fetchUnreadCount();
18+
}, []);
619

720
return (
821
<p className="text-gray-60 body-b absolute top-30 mb-10 w-fit animate-pulse rounded-full bg-white px-6 py-4">

0 commit comments

Comments
 (0)