summaryrefslogtreecommitdiffstats
path: root/webapp/components/dot_menu/dot_menu.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/components/dot_menu/dot_menu.jsx')
-rw-r--r--webapp/components/dot_menu/dot_menu.jsx26
1 files changed, 15 insertions, 11 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'}