Preview audio files (#114)

This commit is contained in:
Hakan Shehu
2025-07-04 18:34:51 +02:00
committed by GitHub
parent 583bebeae9
commit d63d29e633
3 changed files with 25 additions and 1 deletions

View File

@@ -10,7 +10,9 @@ interface FileBodyProps {
export const FileBody = ({ file }: FileBodyProps) => {
const canPreview =
file.attributes.subtype === 'image' || file.attributes.subtype === 'video';
file.attributes.subtype === 'image' ||
file.attributes.subtype === 'video' ||
file.attributes.subtype === 'audio';
return (
<div className="flex h-full max-h-full w-full flex-row items-center gap-2">

View File

@@ -3,6 +3,7 @@ import { useEffect } from 'react';
import { DownloadStatus, LocalFileNode } from '@colanode/client/types';
import { FileDownloadProgress } from '@colanode/ui/components/files/file-download-progress';
import { FileNoPreview } from '@colanode/ui/components/files/file-no-preview';
import { FilePreviewAudio } from '@colanode/ui/components/files/previews/file-preview-audio';
import { FilePreviewImage } from '@colanode/ui/components/files/previews/file-preview-image';
import { FilePreviewVideo } from '@colanode/ui/components/files/previews/file-preview-video';
import { useWorkspace } from '@colanode/ui/contexts/workspace';
@@ -75,5 +76,9 @@ export const FilePreview = ({ file }: FilePreviewProps) => {
return <FilePreviewVideo url={url} />;
}
if (file.attributes.subtype === 'audio') {
return <FilePreviewAudio url={url} name={file.attributes.name} />;
}
return <FileNoPreview mimeType={file.attributes.mimeType} />;
};

View File

@@ -0,0 +1,17 @@
interface FilePreviewAudioProps {
url: string;
name?: string;
}
export const FilePreviewAudio = ({ url, name }: FilePreviewAudioProps) => {
return (
<audio
controls
src={url}
className="w-full max-w-3xl"
aria-label={name ? `Audio file: ${name}` : 'Audio file'}
>
Your browser does not support the audio element.
</audio>
);
};