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

ContextMenuMore.js 2.0KB

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