Merge pull request #250 from matrix-org/rav/disable_composer_if_no_permission

Disable the message composer if we don't have permission to post
This commit is contained in:
Richard van der Hoff 2016-03-29 15:15:58 +01:00
commit abedb05268
2 changed files with 46 additions and 16 deletions

View file

@ -30,7 +30,7 @@
"highlight.js": "^8.9.1", "highlight.js": "^8.9.1",
"linkifyjs": "^2.0.0-beta.4", "linkifyjs": "^2.0.0-beta.4",
"marked": "^0.3.5", "marked": "^0.3.5",
"matrix-js-sdk": "^0.5.0", "matrix-js-sdk": "matrix-org/matrix-js-sdk#develop",
"optimist": "^0.6.1", "optimist": "^0.6.1",
"q": "^1.4.1", "q": "^1.4.1",
"react": "^0.14.2", "react": "^0.14.2",

View file

@ -91,6 +91,14 @@ module.exports = React.createClass({
var TintableSvg = sdk.getComponent("elements.TintableSvg"); var TintableSvg = sdk.getComponent("elements.TintableSvg");
var MessageComposerInput = sdk.getComponent("rooms.MessageComposerInput"); var MessageComposerInput = sdk.getComponent("rooms.MessageComposerInput");
var controls = [];
controls.push(
<div className="mx_MessageComposer_avatar">
<MemberAvatar member={me} width={24} height={24} />
</div>
);
var callButton, videoCallButton, hangupButton; var callButton, videoCallButton, hangupButton;
if (this.props.callState && this.props.callState !== 'ended') { if (this.props.callState && this.props.callState !== 'ended') {
hangupButton = hangupButton =
@ -109,25 +117,47 @@ module.exports = React.createClass({
</div> </div>
} }
var canSendMessages = this.props.room.currentState.maySendMessage(
MatrixClientPeg.get().credentials.userId);
if (canSendMessages) {
// This also currently includes the call buttons. Really we should
// check separately for whether we can call, but this is slightly
// complex because of conference calls.
var uploadButton = (
<div className="mx_MessageComposer_upload"
onClick={this.onUploadClick} title="Upload file">
<TintableSvg src="img/upload.svg" width="19" height="24"/>
<input ref="uploadInput" type="file"
style={uploadInputStyle}
onChange={this.onUploadFileSelected} />
</div>
);
controls.push(
<MessageComposerInput tabComplete={this.props.tabComplete}
onResize={this.props.onResize} room={this.props.room} />,
uploadButton,
hangupButton,
callButton,
videoCallButton,
);
} else {
controls.push(
<div className="mx_MessageComposer_noperm_error">
You do not have permission to post to this room
</div>
);
}
return ( return (
<div className="mx_MessageComposer"> <div className="mx_MessageComposer">
<div className="mx_MessageComposer_wrapper"> <div className="mx_MessageComposer_wrapper">
<div className="mx_MessageComposer_row"> <div className="mx_MessageComposer_row">
<div className="mx_MessageComposer_avatar"> {controls}
<MemberAvatar member={me} width={24} height={24} />
</div> </div>
<MessageComposerInput tabComplete={this.props.tabComplete} onResize={this.props.onResize}
room={this.props.room} />
<div className="mx_MessageComposer_upload" onClick={this.onUploadClick} title="Upload file">
<TintableSvg src="img/upload.svg" width="19" height="24"/>
<input type="file" style={uploadInputStyle} ref="uploadInput" onChange={this.onUploadFileSelected} />
</div>
{ hangupButton }
{ callButton }
{ videoCallButton }
</div> </div>
</div> </div>
</div>
); );
} }
}); });