|
@@ -72,32 +72,6 @@ export const AuthProvider: React.FC<PropsWithChildren> = ({ children }) => {
|
|
|
silentLoginMutation.mutate()
|
|
silentLoginMutation.mutate()
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
- const { data: user, isLoading } = useQuery<User | null, Error>({
|
|
|
|
|
- queryKey: ['currentUser'],
|
|
|
|
|
- queryFn: async () => {
|
|
|
|
|
- const token = Taro.getStorageSync('mini_token')
|
|
|
|
|
- if (!token) {
|
|
|
|
|
- return null
|
|
|
|
|
- }
|
|
|
|
|
- try {
|
|
|
|
|
- const response = await authClient.me.$get({})
|
|
|
|
|
- if (response.status !== 200) {
|
|
|
|
|
- throw new Error('获取用户信息失败')
|
|
|
|
|
- }
|
|
|
|
|
- const user = await response.json()
|
|
|
|
|
- Taro.setStorageSync('userInfo', JSON.stringify(user))
|
|
|
|
|
- return user
|
|
|
|
|
- } catch (error) {
|
|
|
|
|
- // token无效,清除存储
|
|
|
|
|
- Taro.removeStorageSync('mini_token')
|
|
|
|
|
- Taro.removeStorageSync('userInfo')
|
|
|
|
|
- return null
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- staleTime: Infinity, // 用户信息不常变动,设为无限期
|
|
|
|
|
- refetchOnWindowFocus: false, // 失去焦点不重新获取
|
|
|
|
|
- refetchOnReconnect: false, // 网络重连不重新获取
|
|
|
|
|
- })
|
|
|
|
|
|
|
|
|
|
const loginMutation = useMutation<User, Error, LoginRequest>({
|
|
const loginMutation = useMutation<User, Error, LoginRequest>({
|
|
|
mutationFn: async (data) => {
|
|
mutationFn: async (data) => {
|
|
@@ -201,13 +175,34 @@ export const AuthProvider: React.FC<PropsWithChildren> = ({ children }) => {
|
|
|
|
|
|
|
|
const updateUser = updateUserMutation.mutateAsync
|
|
const updateUser = updateUserMutation.mutateAsync
|
|
|
|
|
|
|
|
|
|
+ // 使用React Query获取用户信息
|
|
|
|
|
+ const { data: user } = useQuery<User | null>({
|
|
|
|
|
+ queryKey: ['currentUser'],
|
|
|
|
|
+ queryFn: async () => {
|
|
|
|
|
+ // 直接从本地存储获取用户信息
|
|
|
|
|
+ const userInfoStr = Taro.getStorageSync('userInfo')
|
|
|
|
|
+ if (userInfoStr) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ return JSON.parse(userInfoStr)
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ return null
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return null
|
|
|
|
|
+ },
|
|
|
|
|
+ staleTime: Infinity, // 用户信息不常变动,设为无限期
|
|
|
|
|
+ refetchOnWindowFocus: false, // 失去焦点不重新获取
|
|
|
|
|
+ refetchOnReconnect: false, // 网络重连不重新获取
|
|
|
|
|
+ enabled: false, // 不自动执行,由静默登录和登录mutation更新
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
const value = {
|
|
const value = {
|
|
|
user: user || null,
|
|
user: user || null,
|
|
|
login: loginMutation.mutateAsync,
|
|
login: loginMutation.mutateAsync,
|
|
|
logout: logoutMutation.mutateAsync,
|
|
logout: logoutMutation.mutateAsync,
|
|
|
register: registerMutation.mutateAsync,
|
|
register: registerMutation.mutateAsync,
|
|
|
updateUser,
|
|
updateUser,
|
|
|
- isLoading: isLoading || loginMutation.isPending || registerMutation.isPending || logoutMutation.isPending || silentLoginMutation.isPending,
|
|
|
|
|
|
|
+ isLoading: loginMutation.isPending || registerMutation.isPending || logoutMutation.isPending || silentLoginMutation.isPending,
|
|
|
isLoggedIn: !!user,
|
|
isLoggedIn: !!user,
|
|
|
}
|
|
}
|
|
|
|
|
|