rwadurian/frontend/mining-admin-web/src/features/users/hooks/use-users.ts

72 lines
2.3 KiB
TypeScript

import { useQuery } from '@tanstack/react-query';
import { usersApi } from '../api/users.api';
import type { PaginationParams } from '@/types/api';
export function useUsers(params: PaginationParams & { keyword?: string }) {
return useQuery({
queryKey: ['users', params],
queryFn: () => usersApi.getList(params),
});
}
export function useUserDetail(accountSequence: string) {
return useQuery({
queryKey: ['users', accountSequence],
queryFn: () => usersApi.getDetail(accountSequence),
enabled: !!accountSequence,
});
}
export function useContributionRecords(accountSequence: string, params: PaginationParams) {
return useQuery({
queryKey: ['users', accountSequence, 'contributions', params],
queryFn: () => usersApi.getContributionRecords(accountSequence, params),
enabled: !!accountSequence,
});
}
export function useMiningRecords(accountSequence: string, params: PaginationParams) {
return useQuery({
queryKey: ['users', accountSequence, 'mining-records', params],
queryFn: () => usersApi.getMiningRecords(accountSequence, params),
enabled: !!accountSequence,
});
}
export function useTradeOrders(accountSequence: string, params: PaginationParams) {
return useQuery({
queryKey: ['users', accountSequence, 'orders', params],
queryFn: () => usersApi.getTradeOrders(accountSequence, params),
enabled: !!accountSequence,
});
}
// 从 admin-web 复用的 hooks
export function useReferralTree(
accountSequence: string,
direction: 'up' | 'down' | 'both' = 'both',
depth: number = 1
) {
return useQuery({
queryKey: ['users', accountSequence, 'referral-tree', direction, depth],
queryFn: () => usersApi.getReferralTree(accountSequence, direction, depth),
enabled: !!accountSequence,
});
}
export function usePlantingLedger(accountSequence: string, params: PaginationParams) {
return useQuery({
queryKey: ['users', accountSequence, 'planting-ledger', params],
queryFn: () => usersApi.getPlantingLedger(accountSequence, params),
enabled: !!accountSequence,
});
}
export function useWalletLedger(accountSequence: string, params: PaginationParams) {
return useQuery({
queryKey: ['users', accountSequence, 'wallet-ledger', params],
queryFn: () => usersApi.getWalletLedger(accountSequence, params),
enabled: !!accountSequence,
});
}