diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json
index f758014fe3..d181bf649e 100644
--- a/src/renderer/src/i18n/locales/en-us.json
+++ b/src/renderer/src/i18n/locales/en-us.json
@@ -4658,6 +4658,7 @@
"reason": "The file may be corrupted or has been deleted externally."
}
},
+ "expired": "Expired",
"input_reference": {
"add": {
"error": {
diff --git a/src/renderer/src/pages/video/VideoPanel.tsx b/src/renderer/src/pages/video/VideoPanel.tsx
index 3d4fd6d480..444bb99718 100644
--- a/src/renderer/src/pages/video/VideoPanel.tsx
+++ b/src/renderer/src/pages/video/VideoPanel.tsx
@@ -76,6 +76,10 @@ export const VideoPanel = ({ provider, video, params, updateParams }: VideoPanel
}
}, [addOpenAIVideo, couldCreateVideo, params, t, video])
+ const handleRegenerateVideo = useCallback(() => {
+ window.toast.info('Not implemented')
+ }, [])
+
const handleDownloadVideo = async () => {
if (!video) return
if (video.status === 'completed' || video.status === 'downloaded') {
@@ -145,7 +149,7 @@ export const VideoPanel = ({ provider, video, params, updateParams }: VideoPanel
- {video && }
+ {video && }
{!video && }
diff --git a/src/renderer/src/pages/video/VideoViewer.tsx b/src/renderer/src/pages/video/VideoViewer.tsx
index 34a01f0915..f0212551ba 100644
--- a/src/renderer/src/pages/video/VideoViewer.tsx
+++ b/src/renderer/src/pages/video/VideoViewer.tsx
@@ -10,7 +10,8 @@ import {
useDisclosure
} from '@heroui/react'
import { Video, VideoFailed } from '@renderer/types/video'
-import { CheckCircleIcon, CircleXIcon } from 'lucide-react'
+import dayjs from 'dayjs'
+import { CheckCircleIcon, CircleXIcon, Clock9Icon } from 'lucide-react'
import { useMemo, useState } from 'react'
import { useTranslation } from 'react-i18next'
@@ -18,13 +19,15 @@ export type VideoViewerProps =
| {
video: undefined
onDownload?: never
+ onRegenerate?: never
}
| {
video: Video
onDownload: () => void
+ onRegenerate: () => void
}
-export const VideoViewer = ({ video, onDownload }: VideoViewerProps) => {
+export const VideoViewer = ({ video, onDownload, onRegenerate }: VideoViewerProps) => {
const { t } = useTranslation()
const [loadSuccess, setLoadSuccess] = useState
(undefined)
return (
@@ -33,7 +36,9 @@ export const VideoViewer = ({ video, onDownload }: VideoViewerProps) => {
{video === undefined && t('video.undefined')}
{video && video.status === 'queued' && }
{video && video.status === 'in_progress' && }
- {video && video.status === 'completed' && }
+ {video && video.status === 'completed' && (
+
+ )}
{video && video.status === 'downloading' && }
{video && video.status === 'downloaded' && loadSuccess !== false && (