Skip to content

Commit 2cce4ee

Browse files
authored
fix: 편지함 오류 수정 (#72)
* fix: 토큰 만료로 reissue 실패시 로그아웃 안되는 문제 해결 * fix: reissue 에러 시 에러 처리 안되는 문제 해결 - client.ts의 interceptors.response.use 구문 내에서 api 호출및 데이터 가공을 함수 밖으로 꺼냄 * fix: mailbox에서 isClosed 옵션 반대로 보여주는 문제 해결 - isClosed 상태를 반대로 받아와서 상태를 잘못 보여주는 문제 해결 * fix: 401 에러가 아닌 경우 바로 로그아웃 되는 문제 해결 * FIx: format date 로직 수정 - 소숫점 이하 자리로 인해 에러가 날 경우가 있을 것 같아서 . 기준 split 추가 * fix: mailBox 배포 api에 따른 수정 작업 - sharePost 요청 요청자 id 삭제 - 상세 페이지 api 경로 수정 - 우편함 상세체이지 날짜 잘못표기하는 에러 수정 --------- Co-authored-by: nirii00 <[email protected]>
1 parent 1742006 commit 2cce4ee

File tree

7 files changed

+41
-37
lines changed

7 files changed

+41
-37
lines changed

src/apis/client.ts

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,24 @@ const processQueue = (error: unknown, token: string | null = null) => {
3131
failedQueue = [];
3232
};
3333

34+
const callReissue = async () => {
35+
try {
36+
const response = await getNewToken();
37+
const newToken = response?.data.accessToken;
38+
return newToken;
39+
} catch (e) {
40+
return Promise.reject(e);
41+
}
42+
};
43+
3444
client.interceptors.request.use(
3545
(config) => {
46+
console.log('response again', config);
47+
3648
const accessToken = useAuthStore.getState().accessToken;
3749
if (config.url !== '/auth/reissue' && accessToken) {
3850
config.headers.Authorization = `Bearer ${accessToken}`;
3951
}
40-
4152
return config;
4253
},
4354
(error) => Promise.reject(error),
@@ -48,14 +59,12 @@ client.interceptors.response.use(
4859
async (error) => {
4960
const setAccessToken = useAuthStore.getState().setAccessToken;
5061
const logout = useAuthStore.getState().logout;
51-
const originalRequest = error.config;
62+
const isLoggedIn = useAuthStore.getState().isLoggedIn;
5263

53-
if (!originalRequest) return Promise.reject(error);
64+
const originalRequest = error.config;
5465

55-
if (
56-
originalRequest.url === '/auth/reissue' ||
57-
originalRequest.url.includes('/api/auth/token?state=')
58-
) {
66+
if (!originalRequest || originalRequest.url === '/auth/reissue') {
67+
if (isLoggedIn) logout();
5968
return Promise.reject(error);
6069
}
6170

@@ -79,27 +88,21 @@ client.interceptors.response.use(
7988
} catch (e) {
8089
return Promise.reject(e);
8190
}
82-
}
83-
84-
isRefreshing = true;
85-
86-
try {
87-
const response = await getNewToken();
88-
const newToken = response?.data.accessToken;
89-
90-
if (!newToken) throw new Error('Failed to refresh token');
91-
92-
setAccessToken(newToken);
93-
processQueue(null, newToken);
94-
95-
isRefreshing = false;
96-
originalRequest.headers.Authorization = `Bearer ${newToken}`;
97-
return client(originalRequest);
98-
} catch (e) {
99-
processQueue(e, null);
100-
isRefreshing = false;
101-
logout();
102-
return Promise.reject(e);
91+
} else {
92+
isRefreshing = true;
93+
try {
94+
const newToken = await callReissue();
95+
setAccessToken(newToken);
96+
processQueue(null, newToken);
97+
isRefreshing = false;
98+
originalRequest.headers.Authorization = `Bearer ${newToken}`;
99+
return client(originalRequest);
100+
} catch (e) {
101+
processQueue(e, null);
102+
isRefreshing = false;
103+
if (isLoggedIn) logout();
104+
return Promise.reject(e);
105+
}
103106
}
104107
}
105108
return Promise.reject(error);

src/apis/mailBox.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ export const getMailbox = async () => {
1212

1313
export const getMailboxDetail = async (id: number, pageParam: number) => {
1414
try {
15-
const response = await client.get(`/api/mailbox/${id}?page=${pageParam}&size=20`);
16-
// const response = await client.get(`/api/mailbox/${id}`);
15+
const response = await client.get(`/api/mailbox/${id}/detail?page=${pageParam}&size=20`);
1716

1817
if (!response) throw new Error('error while fetching mailbox detail data');
1918
return response.data;

src/main.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,5 @@ createRoot(document.getElementById('root')!).render(
2121
<App />
2222
</BrowserRouter>
2323
</QueryClientProvider>,
24-
// </StrictMode>,
24+
// </StrictMode>
2525
);

src/pages/LetterBox/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ const fetchMailLists = async () => {
2121
const response = await getMailbox();
2222
if (!response) throw new Error();
2323
const data: LetterBoxData[] = response.data;
24+
console.log(data);
2425
// 정렬?
2526
return data;
2627
};
@@ -63,7 +64,7 @@ const LetterBoxPage = () => {
6364
zipCode={data.oppositeZipCode}
6465
letterCount={data.letterCount}
6566
isChecked={data.oppositeRead}
66-
isClosed={data.active}
67+
isClosed={!data.active}
6768
/>
6869
)),
6970
).map((row, index) =>

src/pages/LetterBoxDetail/components/LetterPreview.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ const LetterPreview = forwardRef<HTMLDivElement, LetterPreviewProps>((props, ref
6161

6262
return (
6363
<LetterWrapper isSender={isSend} onClick={() => handleItemClick(id)} ref={ref}>
64-
<p className="body-r text-gray-80 mb-3">{date}</p>
64+
<p className="body-r text-gray-80 mb-3">{formatDate(date)}</p>
6565
<p className="body-m text-gray-80 line-clamp-1 break-all">{title}</p>
6666
</LetterWrapper>
6767
);

src/pages/LetterBoxDetail/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ const LetterBoxDetailPage = () => {
3535
useInfiniteQuery({
3636
queryKey: ['mailBoxDetail', userInfo.id],
3737
queryFn: async ({ pageParam }) => {
38-
console.log(`Fetching page: ${pageParam}`); // 디버깅용
38+
console.log(`Fetching page: ${pageParam}`);
3939
const response = await getMailboxDetail(userInfo.id, pageParam);
4040
console.log(response.data);
4141
return response.data;
@@ -73,7 +73,7 @@ const LetterBoxDetailPage = () => {
7373

7474
const shareMutation = useMutation({
7575
// Todo : useAuthStore -> myId 대체
76-
mutationFn: () => postShareProposals(selected, 1, userInfo.id, shareComment),
76+
mutationFn: () => postShareProposals(selected, userInfo.id, shareComment),
7777
onSuccess: () => {
7878
toggleShareMode();
7979
setShareComment('');

src/utils/formatDate.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
const formatDate = (isoString: string) => {
2-
const date = new Date(isoString);
2+
const trimmedIsoString = isoString.split('.')[0];
3+
const date = new Date(trimmedIsoString);
34
return date
45
.toLocaleDateString('ko-KR', {
56
year: 'numeric',
67
month: '2-digit',
78
day: '2-digit',
89
})
9-
.replace(/-/g, '.');
10+
.replace(/\./g, '.');
1011
};
1112
export default formatDate;

0 commit comments

Comments
 (0)