diff --git a/src/apis/client.ts b/src/apis/client.ts index 04b37c4..1a4f1e2 100644 --- a/src/apis/client.ts +++ b/src/apis/client.ts @@ -31,13 +31,24 @@ const processQueue = (error: unknown, token: string | null = null) => { failedQueue = []; }; +const callReissue = async () => { + try { + const response = await getNewToken(); + const newToken = response?.data.accessToken; + return newToken; + } catch (e) { + return Promise.reject(e); + } +}; + client.interceptors.request.use( (config) => { + console.log('response again', config); + const accessToken = useAuthStore.getState().accessToken; if (config.url !== '/auth/reissue' && accessToken) { config.headers.Authorization = `Bearer ${accessToken}`; } - return config; }, (error) => Promise.reject(error), @@ -48,14 +59,12 @@ client.interceptors.response.use( async (error) => { const setAccessToken = useAuthStore.getState().setAccessToken; const logout = useAuthStore.getState().logout; - const originalRequest = error.config; + const isLoggedIn = useAuthStore.getState().isLoggedIn; - if (!originalRequest) return Promise.reject(error); + const originalRequest = error.config; - if ( - originalRequest.url === '/auth/reissue' || - originalRequest.url.includes('/api/auth/token?state=') - ) { + if (!originalRequest || originalRequest.url === '/auth/reissue') { + if (isLoggedIn) logout(); return Promise.reject(error); } @@ -79,27 +88,21 @@ client.interceptors.response.use( } catch (e) { return Promise.reject(e); } - } - - isRefreshing = true; - - try { - const response = await getNewToken(); - const newToken = response?.data.accessToken; - - if (!newToken) throw new Error('Failed to refresh token'); - - setAccessToken(newToken); - processQueue(null, newToken); - - isRefreshing = false; - originalRequest.headers.Authorization = `Bearer ${newToken}`; - return client(originalRequest); - } catch (e) { - processQueue(e, null); - isRefreshing = false; - logout(); - return Promise.reject(e); + } else { + isRefreshing = true; + try { + const newToken = await callReissue(); + setAccessToken(newToken); + processQueue(null, newToken); + isRefreshing = false; + originalRequest.headers.Authorization = `Bearer ${newToken}`; + return client(originalRequest); + } catch (e) { + processQueue(e, null); + isRefreshing = false; + if (isLoggedIn) logout(); + return Promise.reject(e); + } } } return Promise.reject(error); diff --git a/src/apis/mailBox.ts b/src/apis/mailBox.ts index 7990b34..722e248 100644 --- a/src/apis/mailBox.ts +++ b/src/apis/mailBox.ts @@ -12,8 +12,7 @@ export const getMailbox = async () => { export const getMailboxDetail = async (id: number, pageParam: number) => { try { - const response = await client.get(`/api/mailbox/${id}?page=${pageParam}&size=20`); - // const response = await client.get(`/api/mailbox/${id}`); + const response = await client.get(`/api/mailbox/${id}/detail?page=${pageParam}&size=20`); if (!response) throw new Error('error while fetching mailbox detail data'); return response.data; diff --git a/src/main.tsx b/src/main.tsx index 41bea78..8b87556 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -21,5 +21,5 @@ createRoot(document.getElementById('root')!).render( , - // , + // ); diff --git a/src/pages/LetterBox/index.tsx b/src/pages/LetterBox/index.tsx index 892cb3e..c8010c9 100644 --- a/src/pages/LetterBox/index.tsx +++ b/src/pages/LetterBox/index.tsx @@ -21,6 +21,7 @@ const fetchMailLists = async () => { const response = await getMailbox(); if (!response) throw new Error(); const data: LetterBoxData[] = response.data; + console.log(data); // 정렬? return data; }; @@ -63,7 +64,7 @@ const LetterBoxPage = () => { zipCode={data.oppositeZipCode} letterCount={data.letterCount} isChecked={data.oppositeRead} - isClosed={data.active} + isClosed={!data.active} /> )), ).map((row, index) => diff --git a/src/pages/LetterBoxDetail/components/LetterPreview.tsx b/src/pages/LetterBoxDetail/components/LetterPreview.tsx index 98967fc..ac4f843 100644 --- a/src/pages/LetterBoxDetail/components/LetterPreview.tsx +++ b/src/pages/LetterBoxDetail/components/LetterPreview.tsx @@ -61,7 +61,7 @@ const LetterPreview = forwardRef((props, ref return ( handleItemClick(id)} ref={ref}> -

{date}

+

{formatDate(date)}

{title}

); diff --git a/src/pages/LetterBoxDetail/index.tsx b/src/pages/LetterBoxDetail/index.tsx index 7baea17..e2b7097 100644 --- a/src/pages/LetterBoxDetail/index.tsx +++ b/src/pages/LetterBoxDetail/index.tsx @@ -35,7 +35,7 @@ const LetterBoxDetailPage = () => { useInfiniteQuery({ queryKey: ['mailBoxDetail', userInfo.id], queryFn: async ({ pageParam }) => { - console.log(`Fetching page: ${pageParam}`); // 디버깅용 + console.log(`Fetching page: ${pageParam}`); const response = await getMailboxDetail(userInfo.id, pageParam); console.log(response.data); return response.data; @@ -73,7 +73,7 @@ const LetterBoxDetailPage = () => { const shareMutation = useMutation({ // Todo : useAuthStore -> myId 대체 - mutationFn: () => postShareProposals(selected, 1, userInfo.id, shareComment), + mutationFn: () => postShareProposals(selected, userInfo.id, shareComment), onSuccess: () => { toggleShareMode(); setShareComment(''); diff --git a/src/utils/formatDate.ts b/src/utils/formatDate.ts index 6cca28d..2de211c 100644 --- a/src/utils/formatDate.ts +++ b/src/utils/formatDate.ts @@ -1,11 +1,12 @@ const formatDate = (isoString: string) => { - const date = new Date(isoString); + const trimmedIsoString = isoString.split('.')[0]; + const date = new Date(trimmedIsoString); return date .toLocaleDateString('ko-KR', { year: 'numeric', month: '2-digit', day: '2-digit', }) - .replace(/-/g, '.'); + .replace(/\./g, '.'); }; export default formatDate;