import React from 'react'; import { useTranslation } from 'react-i18next'; import { P2vJob, p2vFile } from '../../utils/p2vApi'; interface PosterResultContentProps { job: P2vJob; /** 새 포스터로 처음부터 */ onNew: () => void; } /** * 포스터 영상 완성 화면. * * 다운로드는 `` 다 — 헤더를 못 붙이므로 p2vFile() 이 접근 키를 * 쿼리로 태워준다(P2V 서버가 ?key= 경로를 지원하는 이유가 이것이다). */ const PosterResultContent: React.FC = ({ job, onNew }) => { const { t } = useTranslation(); const video = p2vFile(job.artifacts.video); const thumbnail = job.artifacts.thumbnail ? p2vFile(job.artifacts.thumbnail) : null; return (

{t('poster.result.title')}

{video ? (

{t('poster.result.fileName')}

{job.name}.mp4

{job.metadata && (
{([ ['event_name', job.metadata.event_name], ['date_text', job.metadata.date_text], ['place', job.metadata.place], ] as const).map(([field, value]) => ( value ? (
{t(`poster.review.field.${field}`)} {value}
) : null ))} {job.metadata.keywords?.length > 0 && (
{job.metadata.keywords.map((kw) => ( #{kw} ))}
)}
)} {job.narration && job.narration.length > 0 && (

{t('poster.review.narration')}

{job.narration.map((line, i) => (

{line}

))}
)}
{thumbnail && ( {t('poster.result.downloadThumb')} )} {video && ( {t('poster.result.downloadVideo')} )}
); }; export default PosterResultContent;