import React, { useState } from 'react'; import type { MediaRequest } from '../../../server/entity/MediaRequest'; import { FormattedDate } from 'react-intl'; import Badge from '../Common/Badge'; import { MediaRequestStatus } from '../../../server/constants/media'; import Button from '../Common/Button'; import axios from 'axios'; interface RequestBlockProps { request: MediaRequest; onUpdate?: () => void; } const RequestBlock: React.FC = ({ request, onUpdate }) => { const [isUpdating, setIsUpdating] = useState(false); const updateRequest = async (type: 'approve' | 'decline'): Promise => { setIsUpdating(true); await axios.get(`/api/v1/request/${request.id}/${type}`); if (onUpdate) { onUpdate(); } setIsUpdating(false); }; const deleteRequest = async () => { setIsUpdating(true); await axios.delete(`/api/v1/request/${request.id}`); if (onUpdate) { onUpdate(); } setIsUpdating(false); }; return (
{request.requestedBy.username} {request.modifiedBy && ( <> {request.modifiedBy?.username} )}
{request.status === MediaRequestStatus.PENDING && ( <> )} {request.status !== MediaRequestStatus.PENDING && ( )}
{request.status === MediaRequestStatus.AVAILABLE && ( Available )} {request.status === MediaRequestStatus.APPROVED && ( Approved )} {request.status === MediaRequestStatus.DECLINED && ( Declined )} {request.status === MediaRequestStatus.PENDING && ( Pending )}
{(request.seasons ?? []).length > 0 && (
Seasons {request.seasons.map((season) => ( {season.seasonNumber} ))}
)}
); }; export default RequestBlock;