diff options
author | Christopher Speller <crspeller@gmail.com> | 2017-07-18 15:45:23 -0700 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2017-07-18 15:45:23 -0700 |
commit | 97f34e483b0fa8b2a8cfe75b72168cfa38cc9d80 (patch) | |
tree | ec2d68077dd2b12de3173871622f3ec2a2b61d35 /webapp/components/dot_menu | |
parent | 21a3219b9b1df033635631afa751742bd4c56ea0 (diff) | |
parent | a350f4dc0754e1aeabb64bd712ce05f7c59cfa60 (diff) | |
download | chat-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.jsx | 26 | ||||
-rw-r--r-- | webapp/components/dot_menu/index.js | 3 |
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'; |