import React, { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { TouchableOpacity, View } from 'react-native'; import { Divider, Text } from 'react-native-paper'; import { useDispatch, useSelector } from 'react-redux'; import { requestDisableAudioModeration, requestDisableVideoModeration, requestEnableAudioModeration, requestEnableVideoModeration } from '../../../av-moderation/actions'; import { isEnabled as isAvModerationEnabled, isSupported as isAvModerationSupported } from '../../../av-moderation/functions'; import { hideSheet, openDialog } from '../../../base/dialog/actions'; import BottomSheet from '../../../base/dialog/components/native/BottomSheet'; import { Icon, IconCheck, IconVideoOff } from '../../../base/icons'; import { MEDIA_TYPE } from '../../../base/media'; import { getParticipantCount, isEveryoneModerator } from '../../../base/participants'; import MuteEveryonesVideoDialog from '../../../video-menu/components/native/MuteEveryonesVideoDialog'; import styles from './styles'; export const ContextMenuMore = () => { const dispatch = useDispatch(); const muteAllVideo = useCallback(() => { dispatch(openDialog(MuteEveryonesVideoDialog)); dispatch(hideSheet()); }, [ dispatch ]); const { t } = useTranslation(); const isModerationSupported = useSelector(isAvModerationSupported); const allModerators = useSelector(isEveryoneModerator); const participantCount = useSelector(getParticipantCount); const isAudioModerationEnabled = useSelector(isAvModerationEnabled(MEDIA_TYPE.AUDIO)); const isVideoModerationEnabled = useSelector(isAvModerationEnabled(MEDIA_TYPE.VIDEO)); const disableAudioModeration = useCallback(() => dispatch(requestDisableAudioModeration()), [ dispatch ]); const disableVideoModeration = useCallback(() => dispatch(requestDisableVideoModeration()), [ dispatch ]); const enableAudioModeration = useCallback(() => dispatch(requestEnableAudioModeration()), [ dispatch ]); const enableVideoModeration = useCallback(() => dispatch(requestEnableVideoModeration()), [ dispatch ]); return ( {t('participantsPane.actions.stopEveryonesVideo')} {isModerationSupported && ((participantCount === 1 || !allModerators)) && <> {t('participantsPane.actions.allow')} {isAudioModerationEnabled ? {t('participantsPane.actions.audioModeration')} : {t('participantsPane.actions.audioModeration')} } {isVideoModerationEnabled ? {t('participantsPane.actions.videoModeration')} : {t('participantsPane.actions.videoModeration')} } } ); };