diff --git a/packages/web/src/javascripts/Components/FilePreview/PreviewComponent.tsx b/packages/web/src/javascripts/Components/FilePreview/PreviewComponent.tsx index 7049c807c..3a3577679 100644 --- a/packages/web/src/javascripts/Components/FilePreview/PreviewComponent.tsx +++ b/packages/web/src/javascripts/Components/FilePreview/PreviewComponent.tsx @@ -10,6 +10,7 @@ import { PreviewableTextFileTypes, RequiresNativeFilePreview } from './isFilePre import TextPreview from './TextPreview' import { parseFileName } from '@standardnotes/filepicker' import { sanitizeFileName } from '@standardnotes/ui-services' +import VideoPreview from './VideoPreview' type Props = { application: WebApplication @@ -89,11 +90,7 @@ const PreviewComponent: FunctionComponent = ({ } if (file.mimeType.startsWith('video/')) { - return ( - - ) + return } if (file.mimeType.startsWith('audio/')) { diff --git a/packages/web/src/javascripts/Components/FilePreview/VideoPreview.tsx b/packages/web/src/javascripts/Components/FilePreview/VideoPreview.tsx new file mode 100644 index 000000000..05b2d6ace --- /dev/null +++ b/packages/web/src/javascripts/Components/FilePreview/VideoPreview.tsx @@ -0,0 +1,78 @@ +import { FilesController } from '@/Controllers/FilesController' +import { NoPreviewIllustration } from '@standardnotes/icons' +import { FileItem } from '@standardnotes/snjs' +import { useState } from 'react' +import Button from '../Button/Button' +import { FileItemActionType } from '../AttachedFilesPopover/PopoverFileItemAction' + +type Props = { + file: FileItem + filesController: FilesController + objectUrl: string +} + +/** + * Some formats require using the tag with the type attribute + * because we use object URLs. However some formats seem to only work + * when not using the tag. + * We show an error message if neither works. + */ +const VideoPreview = ({ file, filesController, objectUrl }: Props) => { + const [showError, setShowError] = useState(false) + const [shouldTryFallback, setShouldTryFallback] = useState(false) + + if (showError) { + return ( +
+ +
This video can't be previewed.
+
+ To view this file, download it and open it using another application. +
+ +
+ ) + } + + if (shouldTryFallback) { + return ( +