import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { queryLogin } from '@/modules/query'; import { toast } from 'sonner'; import type { UserInfo } from '../store'; export const authQueryKeys = { me: ['auth', 'me'] as const, token: ['auth', 'token'] as const, } as const; export const useMe = () => { return useQuery({ queryKey: authQueryKeys.me, queryFn: async () => { const res = await queryLogin.getMe(); if (res.code === 200) { return res.data; } throw new Error(res.message || 'Failed to fetch user info'); }, staleTime: 1000 * 60 * 5, // 5 minutes }); }; export const useSwitchOrg = () => { const queryClient = useQueryClient(); return useMutation({ mutationFn: async (username?: string) => { const res = await queryLogin.switchUser(username || ''); if (res.code === 200) { return res.data; } throw new Error(res.message || 'Switch failed'); }, onSuccess: () => { toast.success('切换成功'); queryClient.invalidateQueries({ queryKey: authQueryKeys.me }); setTimeout(() => { window.location.reload(); }, 1000); }, onError: (error) => { toast.error(error.message || '请求失败'); }, }); }; export const useGetToken = () => { return useQuery({ queryKey: authQueryKeys.token, queryFn: () => queryLogin.getToken(), staleTime: Infinity, }); };