|
@@ -1,27 +1,29 @@
|
|
|
import React from 'react';
|
|
import React from 'react';
|
|
|
-import PropTypes from 'prop-types';
|
|
|
|
|
|
|
|
|
|
|
|
+import { UserPicture } from '@growi/ui';
|
|
|
|
|
+import PropTypes from 'prop-types';
|
|
|
import {
|
|
import {
|
|
|
Button,
|
|
Button,
|
|
|
TabContent, TabPane,
|
|
TabContent, TabPane,
|
|
|
} from 'reactstrap';
|
|
} from 'reactstrap';
|
|
|
-
|
|
|
|
|
import * as toastr from 'toastr';
|
|
import * as toastr from 'toastr';
|
|
|
|
|
|
|
|
-import { UserPicture } from '@growi/ui';
|
|
|
|
|
import AppContainer from '~/client/services/AppContainer';
|
|
import AppContainer from '~/client/services/AppContainer';
|
|
|
-import PageContainer from '~/client/services/PageContainer';
|
|
|
|
|
import CommentContainer from '~/client/services/CommentContainer';
|
|
import CommentContainer from '~/client/services/CommentContainer';
|
|
|
import EditorContainer from '~/client/services/EditorContainer';
|
|
import EditorContainer from '~/client/services/EditorContainer';
|
|
|
|
|
+import PageContainer from '~/client/services/PageContainer';
|
|
|
import GrowiRenderer from '~/client/util/GrowiRenderer';
|
|
import GrowiRenderer from '~/client/util/GrowiRenderer';
|
|
|
|
|
+import { useCurrentUser } from '~/stores/context';
|
|
|
|
|
+import { useIsMobile } from '~/stores/ui';
|
|
|
|
|
|
|
|
-import { withUnstatedContainers } from '../UnstatedUtils';
|
|
|
|
|
|
|
+
|
|
|
|
|
+import { CustomNavTab } from '../CustomNavigation/CustomNav';
|
|
|
|
|
+import NotAvailableForGuest from '../NotAvailableForGuest';
|
|
|
import Editor from '../PageEditor/Editor';
|
|
import Editor from '../PageEditor/Editor';
|
|
|
import { SlackNotification } from '../SlackNotification';
|
|
import { SlackNotification } from '../SlackNotification';
|
|
|
|
|
+import { withUnstatedContainers } from '../UnstatedUtils';
|
|
|
|
|
|
|
|
import CommentPreview from './CommentPreview';
|
|
import CommentPreview from './CommentPreview';
|
|
|
-import NotAvailableForGuest from '../NotAvailableForGuest';
|
|
|
|
|
-import { CustomNavTab } from '../CustomNavigation/CustomNav';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const navTabMapping = {
|
|
const navTabMapping = {
|
|
@@ -272,7 +274,7 @@ class CommentEditor extends React.Component {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
renderReady() {
|
|
renderReady() {
|
|
|
- const { appContainer, commentContainer } = this.props;
|
|
|
|
|
|
|
+ const { appContainer, commentContainer, isMobile } = this.props;
|
|
|
const { activeTab } = this.state;
|
|
const { activeTab } = this.state;
|
|
|
|
|
|
|
|
const commentPreview = this.state.isMarkdown ? this.getCommentHtml() : null;
|
|
const commentPreview = this.state.isMarkdown ? this.getCommentHtml() : null;
|
|
@@ -307,7 +309,7 @@ class CommentEditor extends React.Component {
|
|
|
value={this.state.comment}
|
|
value={this.state.comment}
|
|
|
isGfmMode={this.state.isMarkdown}
|
|
isGfmMode={this.state.isMarkdown}
|
|
|
lineNumbers={false}
|
|
lineNumbers={false}
|
|
|
- isMobile={appContainer.isMobile}
|
|
|
|
|
|
|
+ isMobile={isMobile}
|
|
|
isUploadable={this.state.isUploadable}
|
|
isUploadable={this.state.isUploadable}
|
|
|
isUploadableFile={this.state.isUploadableFile}
|
|
isUploadableFile={this.state.isUploadableFile}
|
|
|
emojiStrategy={emojiStrategy}
|
|
emojiStrategy={emojiStrategy}
|
|
@@ -383,14 +385,14 @@ class CommentEditor extends React.Component {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
render() {
|
|
render() {
|
|
|
- const { appContainer } = this.props;
|
|
|
|
|
|
|
+ const { currentUser } = this.props;
|
|
|
const { isReadyToUse } = this.state;
|
|
const { isReadyToUse } = this.state;
|
|
|
|
|
|
|
|
return (
|
|
return (
|
|
|
<div className="form page-comment-form">
|
|
<div className="form page-comment-form">
|
|
|
<div className="comment-form">
|
|
<div className="comment-form">
|
|
|
<div className="comment-form-user">
|
|
<div className="comment-form-user">
|
|
|
- <UserPicture user={appContainer.currentUser} noLink noTooltip />
|
|
|
|
|
|
|
+ <UserPicture user={currentUser} noLink noTooltip />
|
|
|
</div>
|
|
</div>
|
|
|
<div className="comment-form-main">
|
|
<div className="comment-form-main">
|
|
|
{ !isReadyToUse
|
|
{ !isReadyToUse
|
|
@@ -405,6 +407,11 @@ class CommentEditor extends React.Component {
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+/**
|
|
|
|
|
+ * Wrapper component for using unstated
|
|
|
|
|
+ */
|
|
|
|
|
+const CommentEditorHOCWrapper = withUnstatedContainers(CommentEditor, [AppContainer, PageContainer, EditorContainer, CommentContainer]);
|
|
|
|
|
+
|
|
|
CommentEditor.propTypes = {
|
|
CommentEditor.propTypes = {
|
|
|
appContainer: PropTypes.instanceOf(AppContainer).isRequired,
|
|
appContainer: PropTypes.instanceOf(AppContainer).isRequired,
|
|
|
pageContainer: PropTypes.instanceOf(PageContainer).isRequired,
|
|
pageContainer: PropTypes.instanceOf(PageContainer).isRequired,
|
|
@@ -412,6 +419,8 @@ CommentEditor.propTypes = {
|
|
|
commentContainer: PropTypes.instanceOf(CommentContainer).isRequired,
|
|
commentContainer: PropTypes.instanceOf(CommentContainer).isRequired,
|
|
|
|
|
|
|
|
growiRenderer: PropTypes.instanceOf(GrowiRenderer).isRequired,
|
|
growiRenderer: PropTypes.instanceOf(GrowiRenderer).isRequired,
|
|
|
|
|
+ currentUser: PropTypes.instanceOf(Object),
|
|
|
|
|
+ isMobile: PropTypes.bool,
|
|
|
isForNewComment: PropTypes.bool,
|
|
isForNewComment: PropTypes.bool,
|
|
|
replyTo: PropTypes.string,
|
|
replyTo: PropTypes.string,
|
|
|
currentCommentId: PropTypes.string,
|
|
currentCommentId: PropTypes.string,
|
|
@@ -421,9 +430,17 @@ CommentEditor.propTypes = {
|
|
|
onCommentButtonClicked: PropTypes.func,
|
|
onCommentButtonClicked: PropTypes.func,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-/**
|
|
|
|
|
- * Wrapper component for using unstated
|
|
|
|
|
- */
|
|
|
|
|
-const CommentEditorWrapper = withUnstatedContainers(CommentEditor, [AppContainer, PageContainer, EditorContainer, CommentContainer]);
|
|
|
|
|
|
|
+const CommentEditorWrapper = (props) => {
|
|
|
|
|
+ const { data: isMobile } = useIsMobile();
|
|
|
|
|
+ const { data: currentUser } = useCurrentUser();
|
|
|
|
|
+
|
|
|
|
|
+ return (
|
|
|
|
|
+ <CommentEditorHOCWrapper
|
|
|
|
|
+ {...props}
|
|
|
|
|
+ currentUser={currentUser}
|
|
|
|
|
+ isMobile={isMobile}
|
|
|
|
|
+ />
|
|
|
|
|
+ );
|
|
|
|
|
+};
|
|
|
|
|
|
|
|
export default CommentEditorWrapper;
|
|
export default CommentEditorWrapper;
|