diff --git a/react/features/base/flags/constants.ts b/react/features/base/flags/constants.ts
index 0689df00b1..a5d9442115 100644
--- a/react/features/base/flags/constants.ts
+++ b/react/features/base/flags/constants.ts
@@ -4,6 +4,12 @@
*/
export const ADD_PEOPLE_ENABLED = 'add-people.enabled';
+/**
+ * Flag indicating if the audio device button should be displayed.
+ * Default: enabled (true).
+ */
+export const AUDIO_DEVICE_BUTTON_ENABLED = 'audio-device-button.enabled';
+
/**
* Flag indicating if the SDK should not require the audio focus.
* Used by apps that do not use Jitsi audio.
@@ -239,10 +245,16 @@ export const SETTINGS_ENABLED = 'settings.enabled';
/**
* Flag indicating if tile view feature should be enabled.
- * Default: enabled.
+ * Default: enabled(true).
*/
export const TILE_VIEW_ENABLED = 'tile-view.enabled';
+/**
+ * Flag indicating if the toggle camera button should be enabled
+ * Default: enabled(true).
+ */
+export const TOGGLE_CAMERA_BUTTON_ENABLED = 'toggle-camera-button.enabled';
+
/**
* Flag indicating if the toolbox should be always be visible
* Default: disabled (false).
diff --git a/react/features/conference/components/native/TitleBar.tsx b/react/features/conference/components/native/TitleBar.tsx
index fad4b510a8..0328253159 100644
--- a/react/features/conference/components/native/TitleBar.tsx
+++ b/react/features/conference/components/native/TitleBar.tsx
@@ -4,13 +4,17 @@ import { connect } from 'react-redux';
import { IReduxState } from '../../../app/types';
import { getConferenceName, getConferenceTimestamp } from '../../../base/conference/functions';
-import { CONFERENCE_TIMER_ENABLED } from '../../../base/flags/constants';
+import {
+ AUDIO_DEVICE_BUTTON_ENABLED,
+ CONFERENCE_TIMER_ENABLED,
+ TOGGLE_CAMERA_BUTTON_ENABLED
+} from '../../../base/flags/constants';
import { getFeatureFlag } from '../../../base/flags/functions';
import AudioDeviceToggleButton from '../../../mobile/audio-mode/components/AudioDeviceToggleButton';
import PictureInPictureButton from '../../../mobile/picture-in-picture/components/PictureInPictureButton';
import ParticipantsPaneButton from '../../../participants-pane/components/native/ParticipantsPaneButton';
import { isParticipantsPaneEnabled } from '../../../participants-pane/functions';
-import { isRoomNameEnabled } from '../../../prejoin/functions';
+import { isRoomNameEnabled } from '../../../prejoin/functions.native';
import ToggleCameraButton from '../../../toolbox/components/native/ToggleCameraButton';
import { isToolboxVisible } from '../../../toolbox/functions.native';
import ConferenceTimer from '../ConferenceTimer';
@@ -21,6 +25,11 @@ import styles from './styles';
interface IProps {
+ /**
+ * Whether the audio device button should be displayed.
+ */
+ _audioDeviceButtonEnabled: boolean;
+
/**
* Whether displaying the current conference timer is enabled or not.
*/
@@ -47,6 +56,11 @@ interface IProps {
*/
_roomNameEnabled: boolean;
+ /**
+ * Whether the toggle camera button should be displayed.
+ */
+ _toggleCameraButtonEnabled: boolean;
+
/**
* True if the navigation bar should be visible.
*/
@@ -95,12 +109,18 @@ const TitleBar = (props: IProps) => {
{/* eslint-disable-next-line react/jsx-no-bind */}
-
-
-
-
-
-
+ {
+ props._toggleCameraButtonEnabled
+ &&
+
+
+ }
+ {
+ props._audioDeviceButtonEnabled
+ &&
+
+
+ }
{
_isParticipantsPaneEnabled
&&
@@ -123,11 +143,13 @@ function _mapStateToProps(state: IReduxState) {
const startTimestamp = getConferenceTimestamp(state);
return {
+ _audioDeviceButtonEnabled: getFeatureFlag(state, AUDIO_DEVICE_BUTTON_ENABLED, true),
_conferenceTimerEnabled:
Boolean(getFeatureFlag(state, CONFERENCE_TIMER_ENABLED, true) && !hideConferenceTimer && startTimestamp),
_isParticipantsPaneEnabled: isParticipantsPaneEnabled(state),
_meetingName: getConferenceName(state),
_roomNameEnabled: isRoomNameEnabled(state),
+ _toggleCameraButtonEnabled: getFeatureFlag(state, TOGGLE_CAMERA_BUTTON_ENABLED, true),
_visible: isToolboxVisible(state)
};
}