import {
clearSession,
createRequestor,
createSessionRefresher,
getRefreshToken,
getToken,
toLoginPage,
} from '@continew-app/core'
import { API_BASE_URL } from '../config'
* 匿名请求器:登录 / 刷新令牌等「认证前置」请求专用。
* 不带 onUnauthorized——这些接口自身返回的 401(如密码错误)不应触发会话恢复链路。
*/
export const plainHttp = createRequestor({ baseUrl: API_BASE_URL })
const ensureFreshToken = createSessionRefresher(refreshToken =>
plainHttp.post<{ token: string, refreshToken?: string }>('/auth/refresh', { refreshToken }),
)
export const http = createRequestor({
baseUrl: API_BASE_URL,
getToken,
onUnauthorized: async () => {
if (!getRefreshToken()) {
clearSession()
toLoginPage()
return false
}
const token = await ensureFreshToken()
if (!token) {
toLoginPage()
return false
}
return true
},
})