|
|
@@ -1,66 +1,20 @@
|
|
|
-import React from 'react';
|
|
|
+import React, { useEffect } from 'react';
|
|
|
import PropTypes from 'prop-types';
|
|
|
import AppContainer from '~/client/services/AppContainer';
|
|
|
import NavigationContainer from '~/client/services/NavigationContainer';
|
|
|
import PageContainer from '~/client/services/PageContainer';
|
|
|
import { withUnstatedContainers } from '../UnstatedUtils';
|
|
|
-import loggerFactory from '~/utils/logger';
|
|
|
|
|
|
-import BookmarkButton from '../BookmarkButton';
|
|
|
-import LikeButtons from '../LikeButtons';
|
|
|
+import PageReactionButtons from '../PageReactionButtons';
|
|
|
import PageManagement from '../Page/PageManagement';
|
|
|
|
|
|
|
|
|
-const logger = loggerFactory('growi:SubnavButtons');
|
|
|
const SubnavButtons = (props) => {
|
|
|
const {
|
|
|
appContainer, navigationContainer, pageContainer, isCompactMode,
|
|
|
} = props;
|
|
|
|
|
|
- /* eslint-enable react/prop-types */
|
|
|
-
|
|
|
- /* eslint-disable react/prop-types */
|
|
|
- const PageReactionButtons = ({ pageContainer }) => {
|
|
|
- const {
|
|
|
- state: {
|
|
|
- pageId, likers, sumOfLikers, isLiked, isBookmarked, sumOfBookmarks,
|
|
|
- },
|
|
|
- } = pageContainer;
|
|
|
-
|
|
|
- const onChangeInvoked = () => {
|
|
|
- if (pageContainer.retrieveBookmarkInfo == null) { logger.error('retrieveBookmarkInfo is null') }
|
|
|
- else { pageContainer.retrieveBookmarkInfo() }
|
|
|
- };
|
|
|
-
|
|
|
- const likeInvoked = () => {
|
|
|
- pageContainer.retrieveLikersAndSeenUsers();
|
|
|
- pageContainer.updateStateAfterLike();
|
|
|
- };
|
|
|
-
|
|
|
- const bookmarkInvoked = () => {
|
|
|
- pageContainer.retrieveBookmarkInfo();
|
|
|
- };
|
|
|
-
|
|
|
- return (
|
|
|
- <>
|
|
|
- {pageContainer.isAbleToShowLikeButtons && (
|
|
|
- <span>
|
|
|
- <LikeButtons onChangeInvoked={likeInvoked} pageId={pageId} likers={likers} sumOfLikers={sumOfLikers} isLiked={isLiked} />
|
|
|
- </span>
|
|
|
- )}
|
|
|
- <span>
|
|
|
- <BookmarkButton
|
|
|
- pageId={pageId}
|
|
|
- isBookmarked={isBookmarked}
|
|
|
- sumOfBookmarks={sumOfBookmarks}
|
|
|
- onChangeInvoked={bookmarkInvoked}
|
|
|
- />
|
|
|
- </span>
|
|
|
- </>
|
|
|
- );
|
|
|
- };
|
|
|
- /* eslint-enable react/prop-types */
|
|
|
-
|
|
|
+ const { pageId } = pageContainer.state;
|
|
|
const { editorMode } = navigationContainer.state;
|
|
|
const isViewMode = editorMode === 'view';
|
|
|
|
|
|
@@ -68,7 +22,7 @@ const SubnavButtons = (props) => {
|
|
|
<>
|
|
|
{isViewMode && (
|
|
|
<>
|
|
|
- {pageContainer.isAbleToShowPageReactionButtons && <PageReactionButtons appContainer={appContainer} pageContainer={pageContainer} />}
|
|
|
+ {pageContainer.isAbleToShowPageReactionButtons && <PageReactionButtons pageId={pageId} currentUserId={appContainer.currentUserId} />}
|
|
|
{pageContainer.isAbleToShowPageManagement && <PageManagement isCompactMode={isCompactMode} />}
|
|
|
</>
|
|
|
)}
|
|
|
@@ -81,7 +35,6 @@ const SubnavButtons = (props) => {
|
|
|
*/
|
|
|
const SubnavButtonsWrapper = withUnstatedContainers(SubnavButtons, [AppContainer, NavigationContainer, PageContainer]);
|
|
|
|
|
|
-
|
|
|
SubnavButtons.propTypes = {
|
|
|
appContainer: PropTypes.instanceOf(AppContainer).isRequired,
|
|
|
navigationContainer: PropTypes.instanceOf(NavigationContainer).isRequired,
|