選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

LobbyParticipantItem.js 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // @flow
  2. import React, { useCallback } from 'react';
  3. import { useTranslation } from 'react-i18next';
  4. import { useDispatch } from 'react-redux';
  5. import { setKnockingParticipantApproval } from '../../lobby/actions';
  6. import { ActionTrigger, MediaState } from '../constants';
  7. import { ParticipantItem } from './ParticipantItem';
  8. import { ParticipantActionButton } from './styled';
  9. type Props = {
  10. /**
  11. * Participant reference
  12. */
  13. participant: Object
  14. };
  15. export const LobbyParticipantItem = ({ participant: p }: Props) => {
  16. const dispatch = useDispatch();
  17. const admit = useCallback(() => dispatch(setKnockingParticipantApproval(p.id, true), [ dispatch ]));
  18. const reject = useCallback(() => dispatch(setKnockingParticipantApproval(p.id, false), [ dispatch ]));
  19. const { t } = useTranslation();
  20. return (
  21. <ParticipantItem
  22. actionsTrigger = { ActionTrigger.Permanent }
  23. audioMuteState = { MediaState.None }
  24. participant = { p }
  25. videoMuteState = { MediaState.None }>
  26. <ParticipantActionButton
  27. onClick = { reject }>
  28. {t('lobby.reject')}
  29. </ParticipantActionButton>
  30. <ParticipantActionButton
  31. onClick = { admit }
  32. primary = { true }>
  33. {t('lobby.admit')}
  34. </ParticipantActionButton>
  35. </ParticipantItem>
  36. );
  37. };