Hide the pin option in the context menu if the user can't pin messages

Signed-off-by: Travis Ralston <travpc@gmail.com>
pull/5142/head
Travis Ralston 2017-09-29 11:01:17 -06:00
parent efdb4b02c6
commit f7389b70aa
1 changed files with 17 additions and 10 deletions

View File

@ -43,26 +43,30 @@ module.exports = React.createClass({
getInitialState: function() { getInitialState: function() {
return { return {
canRedact: false, canRedact: false,
canPin: false,
}; };
}, },
componentWillMount: function() { componentWillMount: function() {
MatrixClientPeg.get().on('RoomMember.powerLevel', this._checkCanRedact); MatrixClientPeg.get().on('RoomMember.powerLevel', this._checkPermissions);
this._checkCanRedact(); this._checkPermissions();
}, },
componentWillUnmount: function() { componentWillUnmount: function() {
const cli = MatrixClientPeg.get(); const cli = MatrixClientPeg.get();
if (cli) { if (cli) {
cli.removeListener('RoomMember.powerLevel', this._checkCanRedact); cli.removeListener('RoomMember.powerLevel', this._checkPermissions);
} }
}, },
_checkCanRedact: function() { _checkPermissions: function() {
const cli = MatrixClientPeg.get(); const cli = MatrixClientPeg.get();
const room = cli.getRoom(this.props.mxEvent.getRoomId()); const room = cli.getRoom(this.props.mxEvent.getRoomId());
const canRedact = room.currentState.maySendRedactionForEvent(this.props.mxEvent, cli.credentials.userId); const canRedact = room.currentState.maySendRedactionForEvent(this.props.mxEvent, cli.credentials.userId);
this.setState({canRedact}); const canPin = room.currentState.mayClientSendStateEvent('m.room.pinned_events', cli);
this.setState({canRedact, canPin});
}, },
_isPinned: function() { _isPinned: function() {
@ -210,13 +214,16 @@ module.exports = React.createClass({
{ _t('Forward Message') } { _t('Forward Message') }
</div> </div>
); );
if (this.state.canPin) {
pinButton = ( pinButton = (
<div className="mx_MessageContextMenu_field" onClick={this.onPinClick}> <div className="mx_MessageContextMenu_field" onClick={this.onPinClick}>
{ this._isPinned() ? _t('Unpin Message') : _t('Pin Message') } {this._isPinned() ? _t('Unpin Message') : _t('Pin Message')}
</div> </div>
); );
} }
} }
}
viewSourceButton = ( viewSourceButton = (
<div className="mx_MessageContextMenu_field" onClick={this.onViewSourceClick}> <div className="mx_MessageContextMenu_field" onClick={this.onViewSourceClick}>