summaryrefslogtreecommitdiffstats
path: root/webapp/components/dot_menu
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2017-07-18 15:45:23 -0700
committerChristopher Speller <crspeller@gmail.com>2017-07-18 15:45:23 -0700
commit97f34e483b0fa8b2a8cfe75b72168cfa38cc9d80 (patch)
treeec2d68077dd2b12de3173871622f3ec2a2b61d35 /webapp/components/dot_menu
parent21a3219b9b1df033635631afa751742bd4c56ea0 (diff)
parenta350f4dc0754e1aeabb64bd712ce05f7c59cfa60 (diff)
downloadchat-97f34e483b0fa8b2a8cfe75b72168cfa38cc9d80.tar.gz
chat-97f34e483b0fa8b2a8cfe75b72168cfa38cc9d80.tar.bz2
chat-97f34e483b0fa8b2a8cfe75b72168cfa38cc9d80.zip
Merge branch 'release-4.0'
Diffstat (limited to 'webapp/components/dot_menu')
-rw-r--r--webapp/components/dot_menu/dot_menu.jsx26
-rw-r--r--webapp/components/dot_menu/index.js3
2 files changed, 17 insertions, 12 deletions
diff --git a/webapp/components/dot_menu/dot_menu.jsx b/webapp/components/dot_menu/dot_menu.jsx
index eb6a6c005..a2cbb9b48 100644
--- a/webapp/components/dot_menu/dot_menu.jsx
+++ b/webapp/components/dot_menu/dot_menu.jsx
@@ -58,10 +58,12 @@ export default class DotMenu extends Component {
constructor(props) {
super(props);
- this.handleDropdownOpened = this.handleDropdownOpened.bind(this);
- this.canDelete = false;
- this.canEdit = false;
this.editDisableAction = new DelayedAction(this.handleEditDisable);
+
+ this.state = {
+ canDelete: PostUtils.canDeletePost(props.post),
+ canEdit: PostUtils.canEditPost(props.post, this.editDisableAction)
+ };
}
componentDidMount() {
@@ -69,7 +71,11 @@ export default class DotMenu extends Component {
$('#' + this.props.idPrefix + '_dropdown' + this.props.post.id).on('hidden.bs.dropdown', () => this.props.handleDropdownOpened(false));
}
- handleDropdownOpened() {
+ componentWillUnmount() {
+ this.editDisableAction.cancel();
+ }
+
+ handleDropdownOpened = () => {
this.props.handleDropdownOpened(true);
const position = $('#post-list').height() - $(this.refs.dropdownToggle).offset().top;
@@ -80,17 +86,15 @@ export default class DotMenu extends Component {
}
}
- handleEditDisable() {
- this.canEdit = false;
+ handleEditDisable = () => {
+ this.setState({canEdit: false});
}
render() {
const isSystemMessage = PostUtils.isSystemMessage(this.props.post);
const isMobile = Utils.isMobile();
- this.canDelete = PostUtils.canDeletePost(this.props.post);
- this.canEdit = PostUtils.canEditPost(this.props.post, this.editDisableAction);
- if (this.props.idPrefix === Constants.CENTER && (!isMobile && isSystemMessage && !this.canDelete && !this.canEdit)) {
+ if (this.props.idPrefix === Constants.CENTER && (!isMobile && isSystemMessage && !this.state.canDelete && !this.state.canEdit)) {
return null;
}
@@ -157,7 +161,7 @@ export default class DotMenu extends Component {
}
let dotMenuDelete = null;
- if (this.canDelete) {
+ if (this.state.canDelete) {
dotMenuDelete = (
<DotMenuItem
idPrefix={idPrefix + 'Delete'}
@@ -169,7 +173,7 @@ export default class DotMenu extends Component {
}
let dotMenuEdit = null;
- if (this.canEdit) {
+ if (this.state.canEdit) {
dotMenuEdit = (
<DotMenuEdit
idPrefix={idPrefix + 'Edit'}
diff --git a/webapp/components/dot_menu/index.js b/webapp/components/dot_menu/index.js
index eaa1e8d2c..852fe6791 100644
--- a/webapp/components/dot_menu/index.js
+++ b/webapp/components/dot_menu/index.js
@@ -3,7 +3,8 @@
import {connect} from 'react-redux';
import {bindActionCreators} from 'redux';
-import {flagPost, unflagPost, pinPost, unpinPost} from 'mattermost-redux/actions/posts';
+import {flagPost, unflagPost} from 'mattermost-redux/actions/posts';
+import {pinPost, unpinPost} from 'actions/post_actions.jsx';
import DotMenu from './dot_menu.jsx';