48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
'use client';
|
|
|
|
import { useMemo } from 'react';
|
|
import { useQuery } from '@tanstack/react-query';
|
|
|
|
import { ticketService } from '@/services/api';
|
|
import type { TicketExtensionRequestsParams } from '@/types';
|
|
|
|
import type { ExtensionRequestStatusFilter } from './useExtensionRequestFilters';
|
|
import { extensionRequestKeys } from '../queries/extensionRequestKeys';
|
|
|
|
interface UseExtensionRequestsQueryParams {
|
|
skip: number;
|
|
limit: number;
|
|
ticketName: string;
|
|
statusFilter: ExtensionRequestStatusFilter;
|
|
}
|
|
|
|
function buildExtensionRequestParams({
|
|
skip,
|
|
limit,
|
|
ticketName,
|
|
statusFilter,
|
|
}: UseExtensionRequestsQueryParams): TicketExtensionRequestsParams {
|
|
return {
|
|
skip,
|
|
limit,
|
|
ticket_name: ticketName || undefined,
|
|
status: statusFilter === 'all' ? undefined : statusFilter,
|
|
};
|
|
}
|
|
|
|
export function useExtensionRequestsQuery(
|
|
params: UseExtensionRequestsQueryParams,
|
|
) {
|
|
const { skip, limit, ticketName, statusFilter } = params;
|
|
const queryParams = useMemo(
|
|
() =>
|
|
buildExtensionRequestParams({ skip, limit, ticketName, statusFilter }),
|
|
[limit, skip, statusFilter, ticketName],
|
|
);
|
|
|
|
return useQuery({
|
|
queryKey: extensionRequestKeys.list(queryParams),
|
|
queryFn: () => ticketService.getTicketExtensionRequests(queryParams),
|
|
});
|
|
}
|