feat(extension-requests): add manager queue with quick decisions

This commit is contained in:
2026-07-31 16:33:20 +05:30
parent 2caeae7c91
commit 87fa04e1b5
19 changed files with 1011 additions and 117 deletions

View File

@@ -17,7 +17,6 @@ import type {
DiscardDetectionPayload,
RequestTicketExtensionPayload,
ReviewDetectionRepairProofPayload,
ReviewTicketExtensionPayload,
TicketAssignmentSummary,
TicketListParams,
DetectionProofStatus,
@@ -25,6 +24,7 @@ import type {
} from '@/types';
import { ticketKeys } from '../queries/ticketKeys';
import { extensionRequestKeys } from '../../extension-requests/queries/extensionRequestKeys';
const TICKET_TABLE_REFRESH_MS = 5 * 60 * 1000;
@@ -367,6 +367,9 @@ export function useRequestTicketExtensionMutation(
queryClient.invalidateQueries({
queryKey: ticketKeys.extensionRequest(ticketId, assignmentId),
});
queryClient.invalidateQueries({
queryKey: extensionRequestKeys.lists(),
});
queryClient.invalidateQueries({
queryKey: ticketKeys.assignments(ticketId),
});
@@ -378,36 +381,6 @@ export function useRequestTicketExtensionMutation(
onError: () => toast.error('Failed to request an extension'),
});
}
export function useReviewTicketExtensionMutation(
ticketId: string,
assignmentId: number,
) {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (payload: ReviewTicketExtensionPayload) =>
ticketService.reviewTicketExtension(ticketId, assignmentId, payload),
onSuccess: (_response, payload) => {
toast.success(
payload.action === 'approve'
? 'Extension request approved'
: 'Extension request rejected',
);
queryClient.invalidateQueries({
queryKey: ticketKeys.extensionRequest(ticketId, assignmentId),
});
queryClient.invalidateQueries({
queryKey: ticketKeys.assignments(ticketId),
});
queryClient.invalidateQueries({
queryKey: ticketKeys.timeline(ticketId),
});
queryClient.invalidateQueries({ queryKey: ticketKeys.lists() });
},
onError: () => toast.error('Failed to review extension request'),
});
}
export function useCloseTicketMutation(ticketId: string) {
const queryClient = useQueryClient();