refactor: simplify ticket lifecycle flow, remove processing and completed state

This commit is contained in:
2026-06-30 13:01:08 +05:30
parent adff2e2c41
commit ec77696157
20 changed files with 36 additions and 326 deletions

View File

@@ -23,29 +23,26 @@ const TICKET_TABLE_REFRESH_MS = 5 * 60 * 1000;
interface UseTicketsQueryParams {
skip: number;
limit: number;
status?: TicketStatus | 'all';
chainageId?: string;
}
function buildTicketListParams({
skip,
limit,
status,
chainageId,
}: UseTicketsQueryParams): TicketListParams {
return {
skip,
limit,
status: status === 'all' ? undefined : status,
chainage_id: chainageId || undefined,
};
}
export function useTicketsQuery(params: UseTicketsQueryParams) {
const { skip, limit, status, chainageId } = params;
const { skip, limit, chainageId } = params;
const listParams = useMemo(
() => buildTicketListParams({ skip, limit, status, chainageId }),
[chainageId, limit, skip, status],
() => buildTicketListParams({ skip, limit, chainageId }),
[chainageId, limit, skip],
);
return useQuery({
@@ -115,23 +112,6 @@ export function useAssignTicketMutation(ticketId: string) {
});
}
export function useStartTicketMutation(ticketId: string) {
const queryClient = useQueryClient();
return useMutation({
mutationFn: () => ticketService.startTicket(ticketId),
onSuccess: (ticket) => {
toast.success('Ticket started');
queryClient.setQueryData<TicketDetail>(
ticketKeys.detail(ticketId),
(current) => mergeTicketDetailResponse(current, ticket),
);
queryClient.invalidateQueries({ queryKey: ticketKeys.lists() });
},
onError: () => toast.error('Failed to start ticket'),
});
}
export function useSubmitRepairMutation(ticketId: string) {
const queryClient = useQueryClient();