From 72a34a02f74f534de888b5aa0a1c4eef8a735fc8 Mon Sep 17 00:00:00 2001 From: gabriellsh <40830821+gabriellsh@users.noreply.github.com> Date: Tue, 15 Aug 2023 11:53:10 -0300 Subject: [PATCH] fix(meteor): Close video recorder if permission denied (#30054) --- .changeset/witty-feet-warn.md | 5 +++++ .../VideoMessageRecorder/VideoMessageRecorder.tsx | 9 +++++---- 2 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 .changeset/witty-feet-warn.md diff --git a/.changeset/witty-feet-warn.md b/.changeset/witty-feet-warn.md new file mode 100644 index 00000000000..faaa5d44c13 --- /dev/null +++ b/.changeset/witty-feet-warn.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +fixed the video recorder window not closing after permission is denied. diff --git a/apps/meteor/client/views/composer/VideoMessageRecorder/VideoMessageRecorder.tsx b/apps/meteor/client/views/composer/VideoMessageRecorder/VideoMessageRecorder.tsx index e2b86350aa1..92b8e96b3d4 100644 --- a/apps/meteor/client/views/composer/VideoMessageRecorder/VideoMessageRecorder.tsx +++ b/apps/meteor/client/views/composer/VideoMessageRecorder/VideoMessageRecorder.tsx @@ -1,6 +1,7 @@ import type { IMessage, IRoom } from '@rocket.chat/core-typings'; import { css } from '@rocket.chat/css-in-js'; import { Box, ButtonGroup, Button, Icon, PositionAnimated } from '@rocket.chat/fuselage'; +import { useMutableCallback } from '@rocket.chat/fuselage-hooks'; import { useTranslation, useToastMessageDispatch } from '@rocket.chat/ui-contexts'; import type { AllHTMLAttributes, RefObject } from 'react'; import React, { useRef, useEffect, useState } from 'react'; @@ -94,24 +95,24 @@ const VideoMessageRecorder = ({ rid, tmid, chatContext, reference }: VideoMessag stopVideoRecording(rid, tmid); }; - const handleCancel = () => { + const handleCancel = useMutableCallback(() => { VideoRecorder.stop(); chat?.composer?.setRecordingVideo(false); setTime(undefined); stopVideoRecording(rid, tmid); - }; + }); useEffect(() => { if (!VideoRecorder.getSupportedMimeTypes()) { return dispatchToastMessage({ type: 'error', message: t('Browser_does_not_support_recording_video') }); } - VideoRecorder.start(videoRef.current ?? undefined); + VideoRecorder.start(videoRef.current ?? undefined, (success) => (!success ? handleCancel() : undefined)); return () => { VideoRecorder.stop(); }; - }, [dispatchToastMessage, t]); + }, [dispatchToastMessage, handleCancel, t]); return (