您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

ContextMenuMore.js 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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 } 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 { MEDIA_TYPE } from '../../../base/media';
  14. import { BlockAudioVideoDialog } from '../../../video-menu';
  15. import {
  16. muteAllParticipants
  17. } from '../../../video-menu/actions.any';
  18. import styles from './styles';
  19. type Props = {
  20. /**
  21. * Array of participant IDs to not mute
  22. */
  23. exclude: Array<string>
  24. };
  25. export const ContextMenuMore = ({ exclude }: Props) => {
  26. const dispatch = useDispatch();
  27. const blockAudioVideo = useCallback(() => dispatch(openDialog(BlockAudioVideoDialog)), [ dispatch ]);
  28. const cancel = useCallback(() => dispatch(hideDialog()), [ dispatch ]);
  29. const muteEveryoneVideo = useCallback(() => dispatch(muteAllParticipants(exclude, MEDIA_TYPE.VIDEO)), [ dispatch ]);
  30. const { t } = useTranslation();
  31. return (
  32. <BottomSheet
  33. onCancel = { cancel }
  34. style = { styles.contextMenuMore }>
  35. <TouchableOpacity
  36. onPress = { muteEveryoneVideo }
  37. style = { styles.contextMenuItem }>
  38. <Icon
  39. size = { 20 }
  40. src = { IconVideoOff } />
  41. <Text style = { styles.contextMenuItemText }>{t('participantsPane.actions.stopEveryonesVideo')}</Text>
  42. </TouchableOpacity>
  43. <TouchableOpacity
  44. onPress = { blockAudioVideo }
  45. style = { styles.contextMenuItem }>
  46. <Icon
  47. size = { 20 }
  48. src = { IconMicDisabledHollow }
  49. style = { styles.contextMenuIcon } />
  50. <Text style = { styles.contextMenuItemText }>{t('participantsPane.actions.blockAudioVideo')}</Text>
  51. </TouchableOpacity>
  52. </BottomSheet>
  53. );
  54. };