From 63459e3ec4aafeae1b3d908a83d2d9addfd29494 Mon Sep 17 00:00:00 2001 From: icarus Date: Mon, 13 Oct 2025 13:43:40 +0800 Subject: [PATCH] feat(video): add error details modal for failed videos Implement a modal dialog to display detailed error information when a video processing fails. This provides better visibility into failure reasons compared to just showing a generic error state. --- src/renderer/src/pages/video/VideoViewer.tsx | 50 +++++++++++--------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/src/renderer/src/pages/video/VideoViewer.tsx b/src/renderer/src/pages/video/VideoViewer.tsx index 0d7a45de26..86fe06de88 100644 --- a/src/renderer/src/pages/video/VideoViewer.tsx +++ b/src/renderer/src/pages/video/VideoViewer.tsx @@ -1,4 +1,14 @@ -import { Button, Progress, Spinner } from '@heroui/react' +import { + Alert, + Button, + Modal, + ModalBody, + ModalContent, + ModalFooter, + Progress, + Spinner, + useDisclosure +} from '@heroui/react' import { Video } from '@renderer/types/video' import { CheckCircleIcon, CircleXIcon } from 'lucide-react' import { useState } from 'react' @@ -11,29 +21,9 @@ export interface VideoProps { export const VideoViewer = ({ video }: VideoProps) => { const { t } = useTranslation() const [loadSuccess, setLoadSuccess] = useState(undefined) - // useEffect(() => { - // setVideo(_video) - // }, [_video]) + const { isOpen, onOpen, onClose } = useDisclosure() return ( <> - {/* For test */} - {/* { - if (v !== 'undefined') setVideo({ ..._video, status: v as VideoStatus, progress: 60 } as Video) - else setVideo(undefined) - }} - orientation="horizontal" - className="absolute z-100 rounded-2xl bg-foreground-100 p-4"> - undefined - queued - in_progress - completed - downloading - downloaded - failed - */}
{video === undefined && t('video.undefined')} {video && video.status === 'queued' && ( @@ -88,7 +78,21 @@ export const VideoViewer = ({ video }: VideoProps) => { {t('video.status.failed')}
- + + + + +
+ {video.error === null ? ( + + ) : ( + + )} +
+
+
+ +