Skip to content
Merged
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
59 changes: 31 additions & 28 deletions src/apis/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand All @@ -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);
}

Expand All @@ -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);
Expand Down
3 changes: 1 addition & 2 deletions src/apis/mailBox.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion src/main.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@ createRoot(document.getElementById('root')!).render(
<App />
</BrowserRouter>
</QueryClientProvider>,
// </StrictMode>,
// </StrictMode>
);
3 changes: 2 additions & 1 deletion src/pages/LetterBox/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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;
};
Expand Down Expand Up @@ -63,7 +64,7 @@ const LetterBoxPage = () => {
zipCode={data.oppositeZipCode}
letterCount={data.letterCount}
isChecked={data.oppositeRead}
isClosed={data.active}
isClosed={!data.active}
/>
)),
).map((row, index) =>
Expand Down
2 changes: 1 addition & 1 deletion src/pages/LetterBoxDetail/components/LetterPreview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ const LetterPreview = forwardRef<HTMLDivElement, LetterPreviewProps>((props, ref

return (
<LetterWrapper isSender={isSend} onClick={() => handleItemClick(id)} ref={ref}>
<p className="body-r text-gray-80 mb-3">{date}</p>
<p className="body-r text-gray-80 mb-3">{formatDate(date)}</p>
<p className="body-m text-gray-80 line-clamp-1 break-all">{title}</p>
</LetterWrapper>
);
Expand Down
4 changes: 2 additions & 2 deletions src/pages/LetterBoxDetail/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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('');
Expand Down
5 changes: 3 additions & 2 deletions src/utils/formatDate.ts
Original file line number Diff line number Diff line change
@@ -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;