This commit is contained in:
oneao committed 2025-11-11 22:31:33 +08:00
1 parent 7971c527af
commit b8a6b15355
27 files changed
+480 -399

No files matched your search

+18 -14
View File
@@ -3,7 +3,7 @@ import type { AxiosError } from 'axios'
import { axiosRequestAdapter } from '@alova/adapter-axios'
import { createAlova } from 'alova'
import { router } from 'expo-router'
import { userStore } from '@/store/user'
import { useUserStore } from '@/store/user'
import { toast } from '@/utils/toast'
enum HttpCode {
@@ -30,9 +30,11 @@ function isWhiteListed(url: string) {
}
const alovaInstance = createAlova({
baseURL: 'http://192.168.1.136:8085/app',
baseURL: 'http://192.168.5.6:8085/app',
// baseURL: 'http://192.168.1.136:8085/app',
requestAdapter: axiosRequestAdapter(),
timeout: 5000,
cacheLogger: false,
responded: {
onSuccess: async (response, method: Method) => {
const resData = response.data as ResponseData<any>
@@ -53,7 +55,7 @@ const alovaInstance = createAlova({
// Access Token 过期但 Refresh Token 有效 → 刷新 token 并重试
if (resData.code === HttpCode.RefreshToken) {
try {
const refreshToken = userStore.getState().userInfo?.refreshToken
const refreshToken = useUserStore.getState().userInfo?.refreshToken
if (!refreshToken) {
router.replace('/auth/login')
return
@@ -61,26 +63,24 @@ const alovaInstance = createAlova({
// 调用刷新接口
const res = await alovaInstance.Get<ResponseData<string>>('/auth/refresh/token', {
headers: {
refreshToken,
},
})
headers: { refreshToken },
}).send()
const newToken = res.data
// 更新 store
userStore.getState().setUserInfo({
...userStore.getState().userInfo!,
useUserStore.getState().setUserInfo({
...useUserStore.getState().userInfo!,
token: newToken,
})
// 重试原请求
method.config.headers.token = newToken
await method.send()
const retryResult = await method.send() // ✅ 获取结果
return
return retryResult // ✅ 一定要 return!
}
catch (err) {
// router.replace('/auth/login')
return Promise.reject(err)
}
}
@@ -88,6 +88,9 @@ const alovaInstance = createAlova({
return result
},
onError: (error: AxiosError, _method) => {
console.log('===跳转到error了===')
console.log(error.status)
switch (error.status) {
case 400:
toast.show({
@@ -142,7 +145,7 @@ const alovaInstance = createAlova({
if (isWhiteListed(method.url))
return
if (!userStore.getState().isLoggedIn()) {
if (!useUserStore.getState().isLoggedIn()) {
toast.show({
title: '尚未登录,请先登录',
})
@@ -151,7 +154,8 @@ const alovaInstance = createAlova({
return Promise.reject(new Error('未登录'))
}
method.config.headers.token = userStore.getState().userInfo?.token ?? ''
method.config.cacheFor = 0
method.config.headers.token = useUserStore.getState().userInfo?.token ?? ''
},
})