chore: ticket section implement sse

This commit is contained in:
2026-06-19 18:06:11 +05:30
parent a567a52e26
commit fffd8e3e12
25 changed files with 711 additions and 307 deletions

View File

@@ -1,23 +1,65 @@
'use client';
import { PERMISSIONS } from '@/constants/permissions';
import { PermissionGuard } from '@/guards';
import type { TicketDetail } from '@/types';
import type { TicketDetailLiveState } from '../../hooks/useTicketDetailEvents';
import { AssignTicketAction } from './actions/AssignTicketAction';
import { NoTicketAction } from './actions/NoTicketAction';
import { ProcessingTicketAction } from './actions/ProcessingTicketAction';
import { ReviewRepairAction } from './actions/ReviewRepairAction';
import { SubmitRepairAction } from './actions/SubmitRepairAction';
export function TicketStatusActions({ ticket }: { ticket: TicketDetail }) {
interface TicketStatusActionsProps {
ticket: TicketDetail;
liveState: TicketDetailLiveState;
}
export function TicketStatusActions({
ticket,
liveState,
}: TicketStatusActionsProps) {
if (ticket.status === 'processing') {
return (
<ProcessingTicketAction
progress={liveState.progress}
errorMessage={liveState.errorMessage}
/>
);
}
if (ticket.status === 'unassigned') {
return <AssignTicketAction ticket={ticket} />;
return (
<PermissionGuard
permissions={PERMISSIONS.TICKET.ASSIGN}
fallback={<NoTicketAction status={ticket.status} />}
>
<AssignTicketAction ticket={ticket} />
</PermissionGuard>
);
}
if (ticket.status === 'assigned') {
return <SubmitRepairAction ticket={ticket} />;
return (
<PermissionGuard
permissions={PERMISSIONS.TICKET.WORK}
fallback={<NoTicketAction status={ticket.status} />}
>
<SubmitRepairAction ticket={ticket} />
</PermissionGuard>
);
}
if (ticket.status === 'under_review') {
return <ReviewRepairAction ticket={ticket} />;
return (
<PermissionGuard
permissions={PERMISSIONS.TICKET.REVIEW}
fallback={<NoTicketAction status={ticket.status} />}
>
<ReviewRepairAction ticket={ticket} />
</PermissionGuard>
);
}
return <NoTicketAction status={ticket.status} />;