feat(ticket): add shared extension request history for workers and managers

This commit is contained in:
2026-08-03 16:04:15 +05:30
parent 0a4d9512cb
commit 6169bbdc28
5 changed files with 284 additions and 15 deletions

View File

@@ -33,6 +33,11 @@ import {
useExtensionRequestDecision,
} from '../../../../extension-requests/hooks/useExtensionRequestDecision';
import { useTicketExtensionRequestQuery } from '../../../hooks/useTicketQueries';
import { ExtensionRequestHistoryDialog } from './ExtensionRequestHistoryDialog';
import {
ExtensionRequestDetails,
getLatestRequest,
} from './TicketExtensionRequestPanel';
import { TicketActionCard } from './TicketActionCard';
function getPendingRequest(response: TicketExtensionRequestsResponse) {
@@ -86,10 +91,12 @@ function ExtensionReviewForm({
ticketId,
assignmentId,
request,
requests,
}: {
ticketId: string;
assignmentId: number;
request: TicketExtensionRequest;
requests: TicketExtensionRequest[];
}) {
const {
note,
@@ -210,6 +217,8 @@ function ExtensionReviewForm({
</Button>
</div>
<ExtensionRequestHistoryDialog requests={requests} />
<AlertDialog
open={isRejectConfirmationOpen}
onOpenChange={setIsRejectConfirmationOpen}
@@ -242,9 +251,11 @@ function ExtensionReviewForm({
export function ReviewExtensionRequestAction({
ticketId,
assignmentId,
canReview,
}: {
ticketId: string;
assignmentId: number;
canReview: boolean;
}) {
const extensionRequestQuery = useTicketExtensionRequestQuery(
ticketId,
@@ -274,13 +285,32 @@ export function ReviewExtensionRequestAction({
? getPendingRequest(extensionRequestQuery.data)
: null;
if (!pendingRequest) return null;
const requests = extensionRequestQuery.data?.items ?? [];
if (!pendingRequest || !canReview) {
const latestRequest = extensionRequestQuery.data
? getLatestRequest(extensionRequestQuery.data)
: null;
if (!latestRequest) return null;
return (
<TicketActionCard
icon={CalendarClock}
title="Extension Request"
contextLabel={`Lot ${assignmentId}`}
>
<ExtensionRequestDetails request={latestRequest} requests={requests} />
</TicketActionCard>
);
}
return (
<ExtensionReviewForm
ticketId={ticketId}
assignmentId={assignmentId}
request={pendingRequest}
requests={requests}
/>
);
}