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

LobbyParticipantItem.js 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // @flow
  2. import React, { useCallback } from 'react';
  3. import { useTranslation } from 'react-i18next';
  4. import { View } from 'react-native';
  5. import { Button } from 'react-native-paper';
  6. import { useDispatch } from 'react-redux';
  7. import { setKnockingParticipantApproval } from '../../../lobby/actions.native';
  8. import { MediaState } 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(setKnockingParticipantApproval(p.id, true), [ dispatch ]));
  20. const reject = useCallback(() => dispatch(setKnockingParticipantApproval(p.id, false), [ dispatch ]));
  21. const { t } = useTranslation();
  22. return (
  23. <ParticipantItem
  24. audioMuteState = { MediaState.Muted }
  25. name = { p.name }
  26. participant = { p }
  27. videoMuteState = { MediaState.ForceMuted }>
  28. <View style = { styles.lobbyParticipantItem }>
  29. <Button
  30. children = { t('lobby.admit') }
  31. contentStyle = { styles.participantActionsButtonContent }
  32. labelStyle = { styles.participantActionsButtonText }
  33. mode = 'contained'
  34. onPress = { admit }
  35. style = { styles.participantActionsButtonAdmit } />
  36. <Button
  37. children = { t('lobby.reject') }
  38. contentStyle = { styles.participantActionsButtonContent }
  39. labelStyle = { styles.participantActionsButtonText }
  40. mode = 'contained'
  41. onPress = { reject }
  42. style = { styles.participantActionsButtonReject } />
  43. </View>
  44. </ParticipantItem>
  45. );
  46. };