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

PollsPane.js 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /* eslint-disable react-native/no-color-literals */
  2. // @flow
  3. import { useNavigation, useIsFocused } from '@react-navigation/native';
  4. import React, { useEffect } from 'react';
  5. import { useSelector } from 'react-redux';
  6. import JitsiScreen from '../../../base/modal/components/JitsiScreen';
  7. import Button from '../../../base/react/components/native/Button';
  8. import { BUTTON_TYPES } from '../../../base/react/constants';
  9. import { getUnreadPollCount } from '../../functions';
  10. import AbstractPollsPane from '../AbstractPollsPane';
  11. import type { AbstractProps } from '../AbstractPollsPane';
  12. import PollCreate from './PollCreate';
  13. import PollsList from './PollsList';
  14. import { chatStyles } from './styles';
  15. const PollsPane = (props: AbstractProps) => {
  16. const { createMode, onCreate, setCreateMode, t } = props;
  17. const isPollsScreenFocused = useIsFocused();
  18. const navigation = useNavigation();
  19. const nbUnreadPolls = useSelector(getUnreadPollCount);
  20. const nrUnreadPolls = !isPollsScreenFocused && nbUnreadPolls > 0
  21. ? `(${nbUnreadPolls})`
  22. : '';
  23. useEffect(() => {
  24. navigation.setOptions({
  25. tabBarLabel: `${t('chat.tabs.polls')} ${nrUnreadPolls}`
  26. });
  27. }, [ nrUnreadPolls ]);
  28. return (
  29. <JitsiScreen
  30. contentContainerStyle = { chatStyles.pollPane }
  31. hasTabNavigator = { true }
  32. style = { chatStyles.pollPaneContainer }>
  33. {
  34. createMode
  35. ? <PollCreate setCreateMode = { setCreateMode } />
  36. : <PollsList />
  37. }
  38. {
  39. !createMode && <Button
  40. accessibilityLabel = 'polls.create.create'
  41. label = 'polls.create.create'
  42. onPress = { onCreate }
  43. style = { chatStyles.createPollButton }
  44. type = { BUTTON_TYPES.PRIMARY } />
  45. }
  46. </JitsiScreen>
  47. );
  48. };
  49. /*
  50. * We apply AbstractPollsPane to fill in the AbstractProps common
  51. * to both the web and native implementations.
  52. */
  53. // eslint-disable-next-line new-cap
  54. export default AbstractPollsPane(PollsPane);