11import axios , { type AxiosInstance , type AxiosRequestConfig , type InternalAxiosRequestConfig } from 'axios'
2+ import { tokenStorage } from './tokenStorage'
23
34/**
45 * API client for communicating with the Glean backend.
@@ -59,7 +60,7 @@ export class ApiClient {
5960 }
6061 }
6162
62- const token = localStorage . getItem ( 'access_token' )
63+ const token = await tokenStorage . getAccessToken ( )
6364 if ( token ) {
6465 config . headers . Authorization = `Bearer ${ token } `
6566 }
@@ -79,14 +80,14 @@ export class ApiClient {
7980
8081 // Don't try to refresh if this is already a refresh request or auth request
8182 if ( originalRequest . url ?. includes ( '/auth/refresh' ) || originalRequest . url ?. includes ( '/auth/login' ) ) {
82- this . clearTokensAndRedirect ( )
83+ await this . clearTokensAndRedirect ( )
8384 return Promise . reject ( error )
8485 }
8586
8687 // Check if we have a refresh token
87- const refreshToken = localStorage . getItem ( 'refresh_token' )
88+ const refreshToken = await tokenStorage . getRefreshToken ( )
8889 if ( ! refreshToken ) {
89- this . clearTokensAndRedirect ( )
90+ await this . clearTokensAndRedirect ( )
9091 return Promise . reject ( error )
9192 }
9293
@@ -115,8 +116,8 @@ export class ApiClient {
115116 const { access_token, refresh_token : newRefreshToken } = response . data
116117
117118 // Save new tokens
118- localStorage . setItem ( 'access_token' , access_token )
119- localStorage . setItem ( 'refresh_token' , newRefreshToken )
119+ await tokenStorage . setAccessToken ( access_token )
120+ await tokenStorage . setRefreshToken ( newRefreshToken )
120121
121122 // Update authorization header
122123 originalRequest . headers . Authorization = `Bearer ${ access_token } `
@@ -129,7 +130,7 @@ export class ApiClient {
129130 } catch ( refreshError ) {
130131 // Refresh failed, clear tokens and redirect to login
131132 this . processQueue ( refreshError , null )
132- this . clearTokensAndRedirect ( )
133+ await this . clearTokensAndRedirect ( )
133134 return Promise . reject ( refreshError )
134135 } finally {
135136 this . isRefreshing = false
@@ -218,9 +219,8 @@ export class ApiClient {
218219 /**
219220 * Clear tokens and redirect to login page.
220221 */
221- private clearTokensAndRedirect ( ) : void {
222- localStorage . removeItem ( 'access_token' )
223- localStorage . removeItem ( 'refresh_token' )
222+ private async clearTokensAndRedirect ( ) : Promise < void > {
223+ await tokenStorage . clearTokens ( )
224224 // Only redirect if not already on login page
225225 if ( ! window . location . pathname . includes ( '/login' ) ) {
226226 window . location . href = '/login'
0 commit comments