Files
HoruxDespachosNuevo/apps/web/lib/hooks/use-platform-staff.ts

41 lines
1.1 KiB
TypeScript

'use client';
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import * as api from '../api/platform-staff';
import type { PlatformRole } from '@horux/shared';
export function useStaff() {
return useQuery({
queryKey: ['platform-staff'],
queryFn: api.listStaff,
staleTime: 60 * 1000,
});
}
export function useSearchUsers(q: string) {
return useQuery({
queryKey: ['platform-staff-search', q],
queryFn: () => api.searchUsers(q),
enabled: q.length >= 2,
staleTime: 30 * 1000,
});
}
export function useGrantRole() {
const qc = useQueryClient();
return useMutation({
mutationFn: ({ userId, role }: { userId: string; role: PlatformRole }) =>
api.grantRole(userId, role),
onSuccess: () => qc.invalidateQueries({ queryKey: ['platform-staff'] }),
});
}
export function useRevokeRole() {
const qc = useQueryClient();
return useMutation({
mutationFn: ({ userId, role }: { userId: string; role: PlatformRole }) =>
api.revokeRole(userId, role),
onSuccess: () => qc.invalidateQueries({ queryKey: ['platform-staff'] }),
});
}