Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

KickButton.tsx 1.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import React, { useCallback } from 'react';
  2. import { useTranslation } from 'react-i18next';
  3. import { useDispatch } from 'react-redux';
  4. import { openDialog } from '../../../base/dialog/actions';
  5. import { IconUserDeleted } from '../../../base/icons/svg';
  6. import ContextMenuItem from '../../../base/ui/components/web/ContextMenuItem';
  7. import { NOTIFY_CLICK_MODE } from '../../../toolbox/constants';
  8. import { IButtonProps } from '../../types';
  9. import KickRemoteParticipantDialog from './KickRemoteParticipantDialog';
  10. /**
  11. * Implements a React {@link Component} which displays a button for kicking out
  12. * a participant from the conference.
  13. *
  14. * @returns {JSX.Element}
  15. */
  16. const KickButton = ({
  17. notifyClick,
  18. notifyMode,
  19. participantID
  20. }: IButtonProps): JSX.Element => {
  21. const { t } = useTranslation();
  22. const dispatch = useDispatch();
  23. const handleClick = useCallback(() => {
  24. notifyClick?.();
  25. if (notifyMode === NOTIFY_CLICK_MODE.PREVENT_AND_NOTIFY) {
  26. return;
  27. }
  28. dispatch(openDialog(KickRemoteParticipantDialog, { participantID }));
  29. }, [ dispatch, notifyClick, notifyMode, participantID ]);
  30. return (
  31. <ContextMenuItem
  32. accessibilityLabel = { t('videothumbnail.kick') }
  33. className = 'kicklink'
  34. icon = { IconUserDeleted }
  35. id = { `ejectlink_${participantID}` }
  36. onClick = { handleClick }
  37. text = { t('videothumbnail.kick') } />
  38. );
  39. };
  40. export default KickButton;