diff --git a/src/frontend/src/features/recording/api/fetchRecording.ts b/src/frontend/src/features/recording/api/fetchRecording.ts index e9221d73..e8c9dfe4 100644 --- a/src/frontend/src/features/recording/api/fetchRecording.ts +++ b/src/frontend/src/features/recording/api/fetchRecording.ts @@ -1,6 +1,6 @@ import { fetchApi } from '@/api/fetchApi' import { ApiRoom } from '@/features/rooms/api/ApiRoom' -import { RecordingMode } from '@/features/recording' +import { RecordingMode, RecordingStatus } from '@/features/recording' export type RecordingApi = { id: string @@ -8,6 +8,7 @@ export type RecordingApi = { created_at: string key: string mode: RecordingMode + status: RecordingStatus } export const fetchRecording = ({ recordingId }: { recordingId?: string }) => { diff --git a/src/frontend/src/features/recording/index.ts b/src/frontend/src/features/recording/index.ts index 386819cd..82784c78 100644 --- a/src/frontend/src/features/recording/index.ts +++ b/src/frontend/src/features/recording/index.ts @@ -7,7 +7,7 @@ export { useIsRecordingActive } from './hooks/useIsRecordingActive' // api export { useStartRecording } from './api/startRecording' export { useStopRecording } from './api/stopRecording' -export { RecordingMode } from './types' +export { RecordingMode, RecordingStatus } from './types' // components export { RecordingStateToast } from './components/RecordingStateToast' diff --git a/src/frontend/src/features/recording/routes/RecordingDownload.tsx b/src/frontend/src/features/recording/routes/RecordingDownload.tsx index f79d2eec..543dd9ac 100644 --- a/src/frontend/src/features/recording/routes/RecordingDownload.tsx +++ b/src/frontend/src/features/recording/routes/RecordingDownload.tsx @@ -12,6 +12,7 @@ import { formatDate } from '@/utils/formatDate' import { ErrorScreen } from '@/components/ErrorScreen' import { LoadingScreen } from '@/components/LoadingScreen' import { fetchRecording } from '../api/fetchRecording' +import { RecordingStatus } from '@/features/recording' export const RecordingDownload = () => { const { t } = useTranslation('recording') @@ -42,6 +43,13 @@ export const RecordingDownload = () => { return } + if ( + data.status !== RecordingStatus.Saved && + data.status !== RecordingStatus.NotificationSucceed + ) { + return + } + return ( diff --git a/src/frontend/src/features/recording/types.ts b/src/frontend/src/features/recording/types.ts index 78cc5e97..d41b6090 100644 --- a/src/frontend/src/features/recording/types.ts +++ b/src/frontend/src/features/recording/types.ts @@ -2,3 +2,14 @@ export enum RecordingMode { Transcript = 'transcript', ScreenRecording = 'screen_recording', } + +export enum RecordingStatus { + Initiated = 'initiated', + Active = 'active', + Stopped = 'stopped', + Saved = 'saved', + Aborted = 'aborted', + FailedToStart = 'failedToStart', + FailedToStop = 'failedToStop', + NotificationSucceed = 'notification_succeeded', +} diff --git a/src/frontend/src/locales/de/recording.json b/src/frontend/src/locales/de/recording.json index ef8502a1..7ce6aa8d 100644 --- a/src/frontend/src/locales/de/recording.json +++ b/src/frontend/src/locales/de/recording.json @@ -7,6 +7,10 @@ "title": "", "body": "" }, + "unsaved": { + "title": "", + "body": "" + }, "success": { "title": "", "body": "", diff --git a/src/frontend/src/locales/en/recording.json b/src/frontend/src/locales/en/recording.json index fff09fb0..8965465a 100644 --- a/src/frontend/src/locales/en/recording.json +++ b/src/frontend/src/locales/en/recording.json @@ -7,6 +7,10 @@ "title": "Authentication required", "body": "Please log in to access this recording." }, + "unsaved": { + "title": "Download Unavailable", + "body": "This recording is not ready for download yet. Please try again later." + }, "success": { "title": "Your recording is ready!", "body": "Recording of the meeting {{room}} from {{created_at}}.", diff --git a/src/frontend/src/locales/fr/recording.json b/src/frontend/src/locales/fr/recording.json index 5818e570..4228afba 100644 --- a/src/frontend/src/locales/fr/recording.json +++ b/src/frontend/src/locales/fr/recording.json @@ -7,6 +7,10 @@ "title": "Authentification requise", "body": "Veuillez vous connecter pour accéder à cet enregistrement." }, + "unsaved": { + "title": "Téléchargement indisponible", + "body": "Cet enregistrement n'est pas encore prêt à être téléchargé. Veuillez réessayer plus tard." + }, "success": { "title": "Votre enregistrement est prêt !", "body": "Enregistrement de la réunion {{room}} du {{created_at}}.", diff --git a/src/frontend/src/locales/nl/recording.json b/src/frontend/src/locales/nl/recording.json index de3a9965..bda67456 100644 --- a/src/frontend/src/locales/nl/recording.json +++ b/src/frontend/src/locales/nl/recording.json @@ -7,6 +7,10 @@ "title": "Authenticatie vereist", "body": "Log in om toegang te krijgen tot deze opname." }, + "unsaved": { + "title": "Download niet beschikbaar", + "body": "Deze opname is nog niet klaar om te worden gedownload. Probeer het later opnieuw." + }, "success": { "title": "Je opname is klaar!", "body": "Opname van de vergadering {{room}} op {{created_at}}.",