You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ContextMenuMore.js 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // @flow
  2. import React, { useCallback } from 'react';
  3. import { useTranslation } from 'react-i18next';
  4. import { TouchableOpacity } from 'react-native';
  5. import { Text } from 'react-native-paper';
  6. import { useDispatch, useSelector } from 'react-redux';
  7. import { openDialog, hideDialog } from '../../../base/dialog/actions';
  8. import BottomSheet from '../../../base/dialog/components/native/BottomSheet';
  9. import {
  10. Icon, IconMicDisabledHollow,
  11. IconVideoOff
  12. } from '../../../base/icons';
  13. import { getLocalParticipant } from '../../../base/participants';
  14. import { BlockAudioVideoDialog } from '../../../video-menu';
  15. import MuteEveryonesVideoDialog
  16. from '../../../video-menu/components/native/MuteEveryonesVideoDialog';
  17. import styles from './styles';
  18. export const ContextMenuMore = () => {
  19. const dispatch = useDispatch();
  20. const blockAudioVideo = useCallback(() => dispatch(openDialog(BlockAudioVideoDialog)), [ dispatch ]);
  21. const cancel = useCallback(() => dispatch(hideDialog()), [ dispatch ]);
  22. const { id } = useSelector(getLocalParticipant);
  23. const muteAllVideo = useCallback(() =>
  24. dispatch(openDialog(MuteEveryonesVideoDialog,
  25. { exclude: [ id ] })),
  26. [ dispatch ]);
  27. const { t } = useTranslation();
  28. return (
  29. <BottomSheet
  30. onCancel = { cancel }
  31. style = { styles.contextMenuMore }>
  32. <TouchableOpacity
  33. onPress = { muteAllVideo }
  34. style = { styles.contextMenuItem }>
  35. <Icon
  36. size = { 24 }
  37. src = { IconVideoOff } />
  38. <Text style = { styles.contextMenuItemText }>{t('participantsPane.actions.stopEveryonesVideo')}</Text>
  39. </TouchableOpacity>
  40. <TouchableOpacity
  41. onPress = { blockAudioVideo }
  42. style = { styles.contextMenuItem }>
  43. <Icon
  44. size = { 24 }
  45. src = { IconMicDisabledHollow }
  46. style = { styles.contextMenuIcon } />
  47. <Text style = { styles.contextMenuItemText }>
  48. {t('participantsPane.actions.blockEveryoneMicCamera')}
  49. </Text>
  50. </TouchableOpacity>
  51. </BottomSheet>
  52. );
  53. };