SubNavButtons.jsx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import React, { useEffect } from 'react';
  2. import PropTypes from 'prop-types';
  3. import AppContainer from '~/client/services/AppContainer';
  4. import NavigationContainer from '~/client/services/NavigationContainer';
  5. import PageContainer from '~/client/services/PageContainer';
  6. import { withUnstatedContainers } from '../UnstatedUtils';
  7. import PageReactionButtons from '../PageReactionButtons';
  8. import PageManagement from '../Page/PageManagement';
  9. const SubnavButtons = (props) => {
  10. const {
  11. appContainer, navigationContainer, pageContainer, isCompactMode,
  12. } = props;
  13. const { pageId } = pageContainer.state;
  14. const { editorMode } = navigationContainer.state;
  15. const isViewMode = editorMode === 'view';
  16. const { sumOfLikers, likerIds, isLiked } = pageContainer.state;
  17. return (
  18. <>
  19. {isViewMode && (
  20. <>
  21. {pageContainer.isAbleToShowPageReactionButtons && (
  22. <PageReactionButtons
  23. pageId={pageId}
  24. currentUserId={appContainer.state.currentUserId}
  25. likerSum={sumOfLikers}
  26. likerIds={likerIds}
  27. isAlreadyLiked={isLiked}
  28. />
  29. )}
  30. {pageContainer.isAbleToShowPageManagement && <PageManagement isCompactMode={isCompactMode} />}
  31. </>
  32. )}
  33. </>
  34. );
  35. };
  36. /**
  37. * Wrapper component for using unstated
  38. */
  39. const SubnavButtonsWrapper = withUnstatedContainers(SubnavButtons, [AppContainer, NavigationContainer, PageContainer]);
  40. SubnavButtons.propTypes = {
  41. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  42. navigationContainer: PropTypes.instanceOf(NavigationContainer).isRequired,
  43. pageContainer: PropTypes.instanceOf(PageContainer).isRequired,
  44. isCompactMode: PropTypes.bool,
  45. };
  46. export default SubnavButtonsWrapper;