From 0c7e24652d52d81390a58db53c61e010103f6e91 Mon Sep 17 00:00:00 2001 From: Ahmad Farhat <ahmad.af.farhat@gmail.com> Date: Tue, 24 Jan 2023 18:17:37 -0500 Subject: [PATCH] Fix recording rename (#4645) --- .../components/recordings/RecordingRow.jsx | 8 ++-- .../recordings/forms/UpdateRecordingForm.jsx | 37 +++++++------------ .../room_recordings/RoomsRecordingRow.jsx | 2 - .../server_recordings/useRecordingsReSync.jsx | 2 +- .../recordings/useDeleteRecording.jsx | 2 +- .../recordings/useUpdateRecording.jsx | 3 +- .../useUpdateRecordingVisibility.jsx | 2 +- 7 files changed, 22 insertions(+), 34 deletions(-) diff --git a/app/javascript/components/recordings/RecordingRow.jsx b/app/javascript/components/recordings/RecordingRow.jsx index 4ea902a5..4a18a8fd 100644 --- a/app/javascript/components/recordings/RecordingRow.jsx +++ b/app/javascript/components/recordings/RecordingRow.jsx @@ -18,7 +18,7 @@ import Modal from '../shared_components/modals/Modal'; // TODO: Amir - Refactor this. export default function RecordingRow({ - recording, visibilityMutation: useVisibilityAPI, updateMutation: useUpdateAPI, deleteMutation: useDeleteAPI, + recording, visibilityMutation: useVisibilityAPI, deleteMutation: useDeleteAPI, }) { const { t } = useTranslation(); @@ -29,7 +29,7 @@ export default function RecordingRow({ } const visibilityAPI = useVisibilityAPI(); - const [isEditing, setIsEditing] = useState(+false); + const [isEditing, setIsEditing] = useState(false); const [isUpdating, setIsUpdating] = useState(false); return ( @@ -43,12 +43,11 @@ export default function RecordingRow({ <strong> {/* TODO: Samuel - add an x button or something to the edit name form */} <UpdateRecordingForm - mutation={useUpdateAPI} recordId={recording.record_id} name={recording.name} hidden={!isEditing || isUpdating} setIsUpdating={setIsUpdating} - noLabel + setIsEditing={setIsEditing} /> { !isEditing @@ -144,6 +143,5 @@ RecordingRow.propTypes = { map: PropTypes.func, }).isRequired, visibilityMutation: PropTypes.func.isRequired, - updateMutation: PropTypes.func.isRequired, deleteMutation: PropTypes.func.isRequired, }; diff --git a/app/javascript/components/recordings/forms/UpdateRecordingForm.jsx b/app/javascript/components/recordings/forms/UpdateRecordingForm.jsx index ef4eca8b..540b1990 100644 --- a/app/javascript/components/recordings/forms/UpdateRecordingForm.jsx +++ b/app/javascript/components/recordings/forms/UpdateRecordingForm.jsx @@ -1,46 +1,37 @@ import React, { useEffect } from 'react'; import PropTypes from 'prop-types'; -import { useForm } from 'react-hook-form'; -import FormControl from '../../shared_components/forms/FormControl'; -import Form from '../../shared_components/forms/Form'; -import { UpdateRecordingsFormConfig, UpdateRecordingsFormFields } from '../../../helpers/forms/UpdateRecordingsFormHelpers'; +import useUpdateRecording from '../../../hooks/mutations/recordings/useUpdateRecording'; export default function UpdateRecordingForm({ - name, noLabel, recordId, hidden, setIsUpdating, mutation: useUpdateAPI, + name, recordId, hidden, setIsUpdating, setIsEditing, }) { - const updateAPI = useUpdateAPI(recordId); + const updateRecording = useUpdateRecording(recordId); - UpdateRecordingsFormConfig.defaultValues.name = name; - - const methods = useForm(UpdateRecordingsFormConfig); - const fields = UpdateRecordingsFormFields; - - useEffect(() => { setIsUpdating(updateAPI.isLoading); }, [updateAPI.isLoading]); + useEffect(() => { setIsUpdating(updateRecording.isLoading); }, [updateRecording.isLoading]); return ( - <Form methods={methods} onBlur={methods.handleSubmit(updateAPI.mutate)} hidden={hidden}> - <FormControl - field={fields.name} - noLabel={noLabel} - type="text" - disabled={updateAPI.isLoading} - /> - </Form> + <input + type="text" + className="form-control" + hidden={hidden} + disabled={updateRecording.isLoading} + onBlur={(e) => { setIsEditing(false); updateRecording.mutate({ recording: { name: e.target.value } }); }} + defaultValue={name} + /> ); } UpdateRecordingForm.defaultProps = { name: '', - noLabel: true, hidden: false, setIsUpdating: () => { }, + setIsEditing: () => { }, }; UpdateRecordingForm.propTypes = { name: PropTypes.string, - noLabel: PropTypes.bool, recordId: PropTypes.string.isRequired, hidden: PropTypes.bool, setIsUpdating: PropTypes.func, - mutation: PropTypes.func.isRequired, + setIsEditing: PropTypes.func, }; diff --git a/app/javascript/components/recordings/room_recordings/RoomsRecordingRow.jsx b/app/javascript/components/recordings/room_recordings/RoomsRecordingRow.jsx index fdcf754f..7f6d14db 100644 --- a/app/javascript/components/recordings/room_recordings/RoomsRecordingRow.jsx +++ b/app/javascript/components/recordings/room_recordings/RoomsRecordingRow.jsx @@ -1,7 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; import useUpdateRecordingVisibility from '../../../hooks/mutations/recordings/useUpdateRecordingVisibility'; -import useUpdateRecording from '../../../hooks/mutations/recordings/useUpdateRecording'; import useDeleteRecording from '../../../hooks/mutations/recordings/useDeleteRecording'; import RecordingRow from '../RecordingRow'; @@ -10,7 +9,6 @@ export default function RoomsRecordingRow({ recording }) { <RecordingRow recording={recording} visibilityMutation={useUpdateRecordingVisibility} - updateMutation={useUpdateRecording} deleteMutation={useDeleteRecording} /> ); diff --git a/app/javascript/hooks/mutations/admin/server_recordings/useRecordingsReSync.jsx b/app/javascript/hooks/mutations/admin/server_recordings/useRecordingsReSync.jsx index e63d4aa3..58d96481 100644 --- a/app/javascript/hooks/mutations/admin/server_recordings/useRecordingsReSync.jsx +++ b/app/javascript/hooks/mutations/admin/server_recordings/useRecordingsReSync.jsx @@ -13,7 +13,7 @@ export default function useRecordingsReSync(friendlyId) { onSuccess: () => { queryClient.invalidateQueries('getServerRecordings'); queryClient.invalidateQueries(['getRoomRecordings', { friendlyId }]); - queryClient.invalidateQueries('getRecordings'); + queryClient.invalidateQueries(['getRecordings']); toast.success(t('toast.success.room.recordings_synced')); }, onError: () => { diff --git a/app/javascript/hooks/mutations/recordings/useDeleteRecording.jsx b/app/javascript/hooks/mutations/recordings/useDeleteRecording.jsx index df8f0e5d..37046796 100644 --- a/app/javascript/hooks/mutations/recordings/useDeleteRecording.jsx +++ b/app/javascript/hooks/mutations/recordings/useDeleteRecording.jsx @@ -11,7 +11,7 @@ export default function useDeleteRecording({ recordId, onSettled }) { () => axios.delete(`/recordings/${recordId}.json`), { onSuccess: () => { - queryClient.invalidateQueries('getRecordings'); + queryClient.invalidateQueries(['getRecordings']); queryClient.invalidateQueries('getRecordingsCount'); queryClient.invalidateQueries(['getRoomRecordings']); queryClient.invalidateQueries('getServerRecordings'); diff --git a/app/javascript/hooks/mutations/recordings/useUpdateRecording.jsx b/app/javascript/hooks/mutations/recordings/useUpdateRecording.jsx index 4eaf2571..0bc4418a 100644 --- a/app/javascript/hooks/mutations/recordings/useUpdateRecording.jsx +++ b/app/javascript/hooks/mutations/recordings/useUpdateRecording.jsx @@ -11,7 +11,8 @@ export default function useUpdateRecording(recordId) { (recordingData) => axios.put(`/recordings/${recordId}.json`, recordingData), { onSuccess: () => { - queryClient.invalidateQueries('getRecordings'); + queryClient.invalidateQueries(['getRecordings']); + queryClient.invalidateQueries(['getRoomRecordings']); queryClient.invalidateQueries('getServerRecordings'); toast.success(t('toast.success.recording.recording_name_updated')); }, diff --git a/app/javascript/hooks/mutations/recordings/useUpdateRecordingVisibility.jsx b/app/javascript/hooks/mutations/recordings/useUpdateRecordingVisibility.jsx index fc355e1d..e8039b37 100644 --- a/app/javascript/hooks/mutations/recordings/useUpdateRecordingVisibility.jsx +++ b/app/javascript/hooks/mutations/recordings/useUpdateRecordingVisibility.jsx @@ -11,7 +11,7 @@ export default function useUpdateRecordingVisibility() { (visibilityData) => axios.post('/recordings/update_visibility.json', visibilityData), { onSuccess: () => { - queryClient.invalidateQueries('getRecordings'); + queryClient.invalidateQueries(['getRecordings']); toast.success(t('toast.success.recording.recording_visibility_updated')); }, onError: () => { -- GitLab