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

LobbyParticipantItem.js 1.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // @flow
  2. import React, { useCallback } from 'react';
  3. import { useTranslation } from 'react-i18next';
  4. import { Button } from 'react-native-paper';
  5. import { useDispatch } from 'react-redux';
  6. import { approveKnockingParticipant } from '../../../lobby/actions.native';
  7. import { showContextMenuReject } from '../../actions.native';
  8. import { MEDIA_STATE } from '../../constants';
  9. import ParticipantItem from './ParticipantItem';
  10. import styles from './styles';
  11. type Props = {
  12. /**
  13. * Participant reference
  14. */
  15. participant: Object
  16. };
  17. export const LobbyParticipantItem = ({ participant: p }: Props) => {
  18. const dispatch = useDispatch();
  19. const admit = useCallback(() => dispatch(approveKnockingParticipant(p.id), [ dispatch ]));
  20. const openContextMenuReject = useCallback(() => dispatch(showContextMenuReject(p), [ dispatch ]));
  21. const { t } = useTranslation();
  22. return (
  23. <ParticipantItem
  24. audioMediaState = { MEDIA_STATE.NONE }
  25. displayName = { p.name }
  26. isKnockingParticipant = { true }
  27. local = { p.local }
  28. onPress = { openContextMenuReject }
  29. participant = { p }
  30. participantID = { p.id }
  31. raisedHand = { p.raisedHand }
  32. videoMediaState = { MEDIA_STATE.NONE }>
  33. <Button
  34. children = { t('lobby.admit') }
  35. contentStyle = { styles.participantActionsButtonContent }
  36. labelStyle = { styles.participantActionsButtonText }
  37. mode = 'contained'
  38. onPress = { admit }
  39. style = { styles.participantActionsButtonAdmit } />
  40. </ParticipantItem>
  41. );
  42. };