From c61fc4067111f1db1e8012b22752834a2013b057 Mon Sep 17 00:00:00 2001 From: lebaudantoine Date: Wed, 27 Nov 2024 17:17:45 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8(frontend)=20add=20API=20to=20start/st?= =?UTF-8?q?op=20recording?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit API calls to interact with backend, minimal call. Might be improved. --- src/frontend/src/api/useConfig.ts | 7 +--- .../src/features/rooms/api/startRecording.ts | 35 +++++++++++++++++++ .../src/features/rooms/api/stopRecording.ts | 23 ++++++++++++ 3 files changed, 59 insertions(+), 6 deletions(-) create mode 100644 src/frontend/src/features/rooms/api/startRecording.ts create mode 100644 src/frontend/src/features/rooms/api/stopRecording.ts diff --git a/src/frontend/src/api/useConfig.ts b/src/frontend/src/api/useConfig.ts index 41a1d550..ed5deda3 100644 --- a/src/frontend/src/api/useConfig.ts +++ b/src/frontend/src/api/useConfig.ts @@ -1,12 +1,7 @@ import { fetchApi } from './fetchApi' import { keys } from './queryKeys' import { useQuery } from '@tanstack/react-query' - -// todo - refactor it in a proper place -export enum RecordingMode { - Transcript = 'transcript', - ScreenRecording = 'screen_recording', -} +import { RecordingMode } from '@/features/rooms/api/startRecording' export interface ApiConfig { analytics?: { diff --git a/src/frontend/src/features/rooms/api/startRecording.ts b/src/frontend/src/features/rooms/api/startRecording.ts new file mode 100644 index 00000000..fca43f35 --- /dev/null +++ b/src/frontend/src/features/rooms/api/startRecording.ts @@ -0,0 +1,35 @@ +import { useMutation, UseMutationOptions } from '@tanstack/react-query' +import { fetchApi } from '@/api/fetchApi' +import { ApiError } from '@/api/ApiError' +import { ApiRoom } from './ApiRoom' + +export enum RecordingMode { + Transcript = 'transcript', + ScreenRecording = 'screen_recording', +} + +export interface StartRecordingParams { + id: string + mode?: RecordingMode +} + +const startRecording = ({ + id, + mode = RecordingMode.Transcript, +}: StartRecordingParams): Promise => { + return fetchApi(`rooms/${id}/start-recording/`, { + method: 'POST', + body: JSON.stringify({ + mode: mode, + }), + }) +} + +export function useStartRecording( + options?: UseMutationOptions +) { + return useMutation({ + mutationFn: startRecording, + onSuccess: options?.onSuccess, + }) +} diff --git a/src/frontend/src/features/rooms/api/stopRecording.ts b/src/frontend/src/features/rooms/api/stopRecording.ts new file mode 100644 index 00000000..38581fb4 --- /dev/null +++ b/src/frontend/src/features/rooms/api/stopRecording.ts @@ -0,0 +1,23 @@ +import { useMutation, UseMutationOptions } from '@tanstack/react-query' +import { fetchApi } from '@/api/fetchApi' +import { ApiError } from '@/api/ApiError' +import { ApiRoom } from './ApiRoom' + +export interface StopRecordingParams { + id: string +} + +const stopRecording = ({ id }: StopRecordingParams): Promise => { + return fetchApi(`rooms/${id}/stop-recording/`, { + method: 'POST', + }) +} + +export function useStopRecording( + options?: UseMutationOptions +) { + return useMutation({ + mutationFn: stopRecording, + onSuccess: options?.onSuccess, + }) +}