2025-01-18 11:20:47 +08:00
|
|
|
import {
|
|
|
|
PREFETCH_STALE_TIME,
|
|
|
|
useCreateReactMutation,
|
|
|
|
useCreateReactQuery
|
|
|
|
} from '@/api/createReactQuery';
|
2025-01-18 00:46:13 +08:00
|
|
|
import { getUser, getUser_server, updateOrganizationUser } from './requests';
|
|
|
|
import { useMemoizedFn } from 'ahooks';
|
|
|
|
import { QueryClient, useQueryClient } from '@tanstack/react-query';
|
|
|
|
import * as config from './config';
|
2025-02-02 12:27:54 +08:00
|
|
|
import type { OrganizationUser } from '@/api/asset_interfaces';
|
2025-01-18 00:46:13 +08:00
|
|
|
|
|
|
|
export const useGetUser = (params: Parameters<typeof getUser>[0]) => {
|
|
|
|
const queryFn = useMemoizedFn(() => {
|
|
|
|
return getUser(params);
|
|
|
|
});
|
|
|
|
|
|
|
|
return useCreateReactQuery({
|
|
|
|
queryKey: config.USER_QUERY_KEY_ID(params.userId),
|
|
|
|
queryFn,
|
2025-01-18 11:20:47 +08:00
|
|
|
staleTime: PREFETCH_STALE_TIME
|
2025-01-18 00:46:13 +08:00
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
export const useUpdateUser = () => {
|
|
|
|
const queryClient = useQueryClient();
|
|
|
|
const mutationFn = useMemoizedFn(async (params: Parameters<typeof updateOrganizationUser>[0]) => {
|
|
|
|
queryClient.setQueryData(
|
|
|
|
config.USER_QUERY_KEY_ID(params.userId),
|
|
|
|
(oldData: OrganizationUser) => {
|
|
|
|
return {
|
|
|
|
...oldData,
|
|
|
|
...params
|
|
|
|
};
|
|
|
|
}
|
|
|
|
);
|
|
|
|
const res = await updateOrganizationUser(params);
|
|
|
|
return res;
|
|
|
|
});
|
|
|
|
|
|
|
|
return useCreateReactMutation({
|
|
|
|
mutationFn: mutationFn
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
export const prefetchGetUser = async (userId: string, queryClientProp?: QueryClient) => {
|
|
|
|
const queryClient = queryClientProp || new QueryClient();
|
|
|
|
await queryClient.prefetchQuery({
|
|
|
|
queryKey: config.USER_QUERY_KEY_ID(userId),
|
|
|
|
queryFn: () => getUser_server({ userId })
|
|
|
|
});
|
|
|
|
return queryClient;
|
|
|
|
};
|