import React, { useState } from 'react'; import type { MediaRequest } from '../../../server/entity/MediaRequest'; import { FormattedDate, useIntl, defineMessages } from 'react-intl'; import Badge from '../Common/Badge'; import { MediaRequestStatus } from '../../../server/constants/media'; import Button from '../Common/Button'; import axios from 'axios'; import globalMessages from '../../i18n/globalMessages'; import RequestModal from '../RequestModal'; import useRequestOverride from '../../hooks/useRequestOverride'; const messages = defineMessages({ seasons: 'Seasons', requestoverrides: 'Request Overrides', server: 'Server', profilechanged: 'Profile Changed', rootfolder: 'Root Folder', }); interface RequestBlockProps { request: MediaRequest; onUpdate?: () => void; } const RequestBlock: React.FC = ({ request, onUpdate }) => { const intl = useIntl(); const [isUpdating, setIsUpdating] = useState(false); const [showEditModal, setShowEditModal] = useState(false); const { profile, rootFolder, server } = useRequestOverride(request); 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 (
setShowEditModal(false)} onComplete={() => { if (onUpdate) { onUpdate(); } setShowEditModal(false); }} />
{request.requestedBy.username}
{request.modifiedBy && (
{request.modifiedBy?.username}
)}
{request.status === MediaRequestStatus.PENDING && ( <> )} {request.status !== MediaRequestStatus.PENDING && ( )}
{request.is4k && ( 4K )} {request.status === MediaRequestStatus.APPROVED && ( {intl.formatMessage(globalMessages.approved)} )} {request.status === MediaRequestStatus.DECLINED && ( {intl.formatMessage(globalMessages.declined)} )} {request.status === MediaRequestStatus.PENDING && ( {intl.formatMessage(globalMessages.pending)} )}
{(request.seasons ?? []).length > 0 && (
{intl.formatMessage(messages.seasons)}
{request.seasons.map((season) => ( {season.seasonNumber} ))}
)} {(server || profile || rootFolder) && ( <>
{intl.formatMessage(messages.requestoverrides)}
    {server && (
  • {intl.formatMessage(messages.server)} {server}
  • )} {profile !== null && (
  • {intl.formatMessage(messages.profilechanged)} ID {profile}
  • )} {rootFolder && (
  • {intl.formatMessage(messages.rootfolder)} {rootFolder}
  • )}
)}
); }; export default RequestBlock;