Skip to content

Commit

Permalink
fix: abort 컨트롤러 예외 처리 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
semnil5202 committed Sep 20, 2023
1 parent 7da225e commit 7688bcd
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions frontend/src/apis/getApi.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
let isFetchingRefreshToken = false;
const abortController = new AbortController();

const decodeToken = (token: string) => {
const tokenParts = token.split('.');
Expand All @@ -14,16 +14,14 @@ const decodeToken = (token: string) => {
async function refreshToken(headers: Headers): Promise<string> {
const accessToken = localStorage.getItem('userToken');
try {
// refresh token 재발급 요청 중이므로 더 이상 요청을 보내지 않도록 한다.
isFetchingRefreshToken = true;

// 서버에 새로운 엑세스 토큰을 요청하기 위한 네트워크 요청을 보냅니다.
const refreshResponse = await fetch(`${DEFAULT_PROD_URL}/refresh-token`, {
method: 'POST',
headers,
body: JSON.stringify({
accessToken: accessToken,
}),
signal: abortController.signal,
});

// 서버 응답이 성공적인지 확인합니다.
Expand All @@ -38,7 +36,8 @@ async function refreshToken(headers: Headers): Promise<string> {
} catch (error) {
// 네트워크 요청 실패 또는 예외 발생 시 예외를 캐치하여 처리합니다.
console.error('네트워크 요청 실패 또는 예외 발생:', error);
throw error; // 예외를 다시 throw하여 상위 코드로 전파합니다.
// throw error; // 예외를 다시 throw하여 상위 코드로 전파합니다.
return 'abort';
}
}

Expand All @@ -48,10 +47,13 @@ const isTokenExpired = (token: string) => {
};

async function updateToken(headers: Headers) {
if (!isFetchingRefreshToken) {
const newToken = await refreshToken(headers);
localStorage.setItem('userToken', newToken);
const newToken = await refreshToken(headers);
if (newToken === 'abort') {
return;
}

localStorage.setItem('userToken', newToken);
abortController.abort();
}

async function withTokenRefresh<T>(callback: () => Promise<T>): Promise<T> {
Expand Down

0 comments on commit 7688bcd

Please sign in to comment.