From 1b2aa1ea75bce1770f174b638a1d5deec5fcd990 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ram=C3=B3n=20Souza?= <contato@ramonsouza.com>
Date: Mon, 4 Sep 2023 16:06:27 -0300
Subject: [PATCH] mirror/unmirror labels

---
 .../video-list/video-list-item/component.jsx  |  3 +++
 .../user-actions/component.jsx                | 21 ++++++++++++-------
 bigbluebutton-html5/public/locales/en.json    |  6 ++++--
 3 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/bigbluebutton-html5/imports/ui/components/video-provider/video-list/video-list-item/component.jsx b/bigbluebutton-html5/imports/ui/components/video-provider/video-list/video-list-item/component.jsx
index 4aa349f92fd7..4fac4b6d59b1 100755
--- a/bigbluebutton-html5/imports/ui/components/video-provider/video-list/video-list-item/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/video-provider/video-list/video-list-item/component.jsx
@@ -129,6 +129,7 @@ const VideoListItem = (props) => {
       onHandleVideoFocus={onHandleVideoFocus}
       focused={focused}
       onHandleMirror={() => setIsMirrored((value) => !value)}
+      isMirrored={isMirrored}
       isRTL={isRTL}
       isStream={isStream}
       onHandleDisableCam={() => setIsSelfViewDisabled((value) => !value)}
@@ -156,6 +157,7 @@ const VideoListItem = (props) => {
           onHandleVideoFocus={onHandleVideoFocus}
           focused={focused}
           onHandleMirror={() => setIsMirrored((value) => !value)}
+          isMirrored={isMirrored}
           isRTL={isRTL}
           isStream={isStream}
           onHandleDisableCam={() => setIsSelfViewDisabled((value) => !value)}
@@ -206,6 +208,7 @@ const VideoListItem = (props) => {
           onHandleVideoFocus={onHandleVideoFocus}
           focused={focused}
           onHandleMirror={() => setIsMirrored((value) => !value)}
+          isMirrored={isMirrored}
           isRTL={isRTL}
           isStream={isStream}
           onHandleDisableCam={() => setIsSelfViewDisabled((value) => !value)}
diff --git a/bigbluebutton-html5/imports/ui/components/video-provider/video-list/video-list-item/user-actions/component.jsx b/bigbluebutton-html5/imports/ui/components/video-provider/video-list/video-list-item/user-actions/component.jsx
index 3fcbb8e2c98e..b9c3ea090ff5 100644
--- a/bigbluebutton-html5/imports/ui/components/video-provider/video-list/video-list-item/user-actions/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/video-provider/video-list/video-list-item/user-actions/component.jsx
@@ -39,11 +39,17 @@ const intlMessages = defineMessages({
   unpinDesc: {
     id: 'app.videoDock.webcamUnpinDesc',
   },
-  mirrorLabel: {
-    id: 'app.videoDock.webcamMirrorLabel',
+  enableMirrorLabel: {
+    id: 'app.videoDock.webcamEnableMirrorLabel',
   },
-  mirrorDesc: {
-    id: 'app.videoDock.webcamMirrorDesc',
+  enableMirrorDesc: {
+    id: 'app.videoDock.webcamEnableMirrorDesc',
+  },
+  disableMirrorLabel: {
+    id: 'app.videoDock.webcamDisableMirrorLabel',
+  },
+  disableMirrorDesc: {
+    id: 'app.videoDock.webcamDisableMirrorDesc',
   },
   fullscreenLabel: {
     id: 'app.videoDock.webcamFullscreenLabel',
@@ -61,7 +67,7 @@ const intlMessages = defineMessages({
 const UserActions = (props) => {
   const {
     name, cameraId, numOfStreams, onHandleVideoFocus, user, focused, onHandleMirror,
-    isVideoSqueezed, videoContainer, isRTL, isStream, isSelfViewDisabled,
+    isVideoSqueezed, videoContainer, isRTL, isStream, isSelfViewDisabled, isMirrored,
   } = props;
 
   const intl = useIntl();
@@ -73,6 +79,7 @@ const UserActions = (props) => {
     const userId = user?.userId;
     const isPinnedIntlKey = !pinned ? 'pin' : 'unpin';
     const isFocusedIntlKey = !focused ? 'focus' : 'unfocus';
+    const isMirroredIntlKey = !isMirrored ? 'enableMirror' : 'disableMirror';
     const disabledCams = Session.get('disabledCams') || [];
     const isCameraDisabled = disabledCams && disabledCams?.includes(cameraId);
     const enableSelfCamIntlKey = !isCameraDisabled ? 'disable' : 'enable';
@@ -120,8 +127,8 @@ const UserActions = (props) => {
     if (isStream) {
       menuItems.push({
         key: `${cameraId}-mirror`,
-        label: intl.formatMessage(intlMessages.mirrorLabel),
-        description: intl.formatMessage(intlMessages.mirrorDesc),
+        label: intl.formatMessage(intlMessages[`${isMirroredIntlKey}Label`]),
+        description: intl.formatMessage(intlMessages[`${isMirroredIntlKey}Desc`]),
         onClick: () => onHandleMirror(cameraId),
         dataTest: 'mirrorWebcamBtn',
       });
diff --git a/bigbluebutton-html5/public/locales/en.json b/bigbluebutton-html5/public/locales/en.json
index c09a2c879a1c..76f704b408eb 100755
--- a/bigbluebutton-html5/public/locales/en.json
+++ b/bigbluebutton-html5/public/locales/en.json
@@ -1151,8 +1151,10 @@
     "app.feedback.textarea": "How can we make BigBlueButton better?",
     "app.feedback.sendFeedback": "Send Feedback",
     "app.feedback.sendFeedbackDesc": "Send a feedback and leave the meeting",
-    "app.videoDock.webcamMirrorLabel": "Mirror",
-    "app.videoDock.webcamMirrorDesc": "Mirror the selected webcam",
+    "app.videoDock.webcamEnableMirrorLabel": "Enable webcam mirroring",
+    "app.videoDock.webcamEnableMirrorDesc": "Mirror the selected webcam",
+    "app.videoDock.webcamDisableMirrorLabel": "Disable webcam mirroring",
+    "app.videoDock.webcamDisableMirrorDesc": "Disable mirroring in the selected webcam",
     "app.videoDock.webcamFocusLabel": "Focus",
     "app.videoDock.webcamFocusDesc": "Focus the selected webcam",
     "app.videoDock.webcamUnfocusLabel": "Unfocus",