You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

PollsPane.js 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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 { Button, useTheme } from 'react-native-paper';
  6. import { useSelector } from 'react-redux';
  7. import JitsiScreen from '../../../base/modal/components/JitsiScreen';
  8. import { BUTTON_MODES } from '../../../chat/constants';
  9. import { screen } from '../../../conference/components/native/routes';
  10. import { getUnreadPollCount } from '../../functions';
  11. import AbstractPollsPane from '../AbstractPollsPane';
  12. import type { AbstractProps } from '../AbstractPollsPane';
  13. import PollCreate from './PollCreate';
  14. import PollsList from './PollsList';
  15. import { chatStyles } from './styles';
  16. const PollsPane = (props: AbstractProps) => {
  17. const { createMode, onCreate, setCreateMode, t } = props;
  18. const isPollsScreenFocused = useIsFocused();
  19. const navigation = useNavigation();
  20. const nbUnreadPolls = useSelector(getUnreadPollCount);
  21. const { palette } = useTheme();
  22. const nrUnreadPolls = !isPollsScreenFocused && nbUnreadPolls > 0
  23. ? `(${nbUnreadPolls})`
  24. : '';
  25. useEffect(() => {
  26. navigation.setOptions({
  27. tabBarLabel: `${screen.conference.chatandpolls.tab.polls} ${nrUnreadPolls}`
  28. });
  29. }, [ nrUnreadPolls ]);
  30. return (
  31. <JitsiScreen
  32. contentContainerStyle = { chatStyles.PollPane }
  33. hasTabNavigator = { true }
  34. style = { chatStyles.PollPaneContainer }>
  35. {
  36. createMode
  37. ? <PollCreate setCreateMode = { setCreateMode } />
  38. : <PollsList />
  39. }
  40. {
  41. !createMode && <Button
  42. color = { palette.screen01Header }
  43. mode = { BUTTON_MODES.CONTAINED }
  44. onPress = { onCreate }
  45. style = { chatStyles.createPollButton } >
  46. {t('polls.create.create')}
  47. </Button>
  48. }
  49. </JitsiScreen>
  50. );
  51. };
  52. /*
  53. * We apply AbstractPollsPane to fill in the AbstractProps common
  54. * to both the web and native implementations.
  55. */
  56. // eslint-disable-next-line new-cap
  57. export default AbstractPollsPane(PollsPane);