Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

AskToUnmuteButton.tsx 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import React, { useCallback, useMemo } from 'react';
  2. import { useTranslation } from 'react-i18next';
  3. import { useDispatch } from 'react-redux';
  4. import { approveParticipantAudio, approveParticipantVideo } from '../../../av-moderation/actions';
  5. import { IconMic, IconVideo } from '../../../base/icons/svg';
  6. import { MEDIA_TYPE, MediaType } from '../../../base/media/constants';
  7. import ContextMenuItem from '../../../base/ui/components/web/ContextMenuItem';
  8. interface IProps {
  9. buttonType: MediaType;
  10. /**
  11. * The ID for the participant on which the button will act.
  12. */
  13. participantID: string;
  14. }
  15. const AskToUnmuteButton = ({ buttonType, participantID }: IProps) => {
  16. const dispatch = useDispatch();
  17. const { t } = useTranslation();
  18. const _onClick = useCallback(() => {
  19. if (buttonType === MEDIA_TYPE.AUDIO) {
  20. dispatch(approveParticipantAudio(participantID));
  21. } else if (buttonType === MEDIA_TYPE.VIDEO) {
  22. dispatch(approveParticipantVideo(participantID));
  23. }
  24. }, [ participantID, buttonType ]);
  25. const text = useMemo(() => {
  26. if (buttonType === MEDIA_TYPE.AUDIO) {
  27. return t('participantsPane.actions.askUnmute');
  28. } else if (buttonType === MEDIA_TYPE.VIDEO) {
  29. return t('participantsPane.actions.allowVideo');
  30. }
  31. return '';
  32. }, [ buttonType ]);
  33. const icon = useMemo(() => {
  34. if (buttonType === MEDIA_TYPE.AUDIO) {
  35. return IconMic;
  36. } else if (buttonType === MEDIA_TYPE.VIDEO) {
  37. return IconVideo;
  38. }
  39. }, [ buttonType ]);
  40. return (
  41. <ContextMenuItem
  42. accessibilityLabel = { text }
  43. icon = { icon }
  44. onClick = { _onClick }
  45. testId = { `unmute-${buttonType}-${participantID}` }
  46. text = { text } />
  47. );
  48. };
  49. export default AskToUnmuteButton;