@@ -21,7 +21,7 @@ export class BaseApi {
21
21
baseURL : API_URL + baseUrl ,
22
22
timeout : 10000 ,
23
23
headers : {
24
- "Content-Type" : "application/json" ,
24
+ "Content-Type" : "application/json"
25
25
} ,
26
26
withCredentials : true
27
27
} ) ;
@@ -42,21 +42,26 @@ export class BaseApi {
42
42
43
43
private setUpResponseInterceptors ( axiosInstance : AxiosInstance ) : number {
44
44
return axiosInstance . interceptors . response . use (
45
- ( response : AxiosResponse ) => response ,
45
+ ( response : AxiosResponse ) => {
46
+ return response ;
47
+ } ,
46
48
async ( err : AxiosError ) => {
47
49
const prevRequest = err ?. config ;
48
50
if ( prevRequest && err ?. response ?. status === 401 ) {
49
51
try {
50
52
// Eject to prevent infinite loop
51
- this . protectedAxiosInstance . interceptors . response . eject ( this . protectedResponseInterceptorId ) ;
52
53
const newAccessToken = await userUseCases . refreshToken ( ) ;
53
54
prevRequest . headers [ "Authorization" ] = `Bearer ${ newAccessToken } ` ;
54
- AuthClientStore . setAccessToken ( newAccessToken ) ;
55
+ if ( newAccessToken ) {
56
+ AuthClientStore . setAccessToken ( newAccessToken ) ;
57
+ }
55
58
return this . protectedAxiosInstance ( prevRequest ) ;
56
59
} catch ( error ) {
57
60
// Refresh token expired/invalid
58
61
console . error ( error ) ;
59
62
return Promise . reject ( error ) ;
63
+ } finally {
64
+ this . protectedAxiosInstance . interceptors . response . eject ( this . protectedResponseInterceptorId ) ;
60
65
}
61
66
}
62
67
return Promise . reject ( err ) ;
0 commit comments