Merge pull request #3909 from matrix-org/t3chguy/invite_reject_ignore
Add Reject & Ignore user button to invites view
This commit is contained in:
commit
26aa4bb4f3
4 changed files with 57 additions and 4 deletions
|
@ -117,12 +117,17 @@ limitations under the License.
|
|||
.mx_RoomPreviewBar_actions {
|
||||
flex-direction: column-reverse;
|
||||
.mx_AccessibleButton {
|
||||
padding: 7px 50px;//extra wide
|
||||
padding: 7px 50px; //extra wide
|
||||
}
|
||||
|
||||
& > * {
|
||||
margin-top: 12px;
|
||||
}
|
||||
.mx_AccessibleButton.mx_AccessibleButton_kind_primary {
|
||||
// to account for the padding of the primary button which causes inconsistent look between
|
||||
// subsequent secondary (text) buttons
|
||||
margin-bottom: 7px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1367,6 +1367,41 @@ export default createReactClass({
|
|||
});
|
||||
},
|
||||
|
||||
onRejectAndIgnoreClick: async function() {
|
||||
this.setState({
|
||||
rejecting: true,
|
||||
});
|
||||
|
||||
const cli = MatrixClientPeg.get();
|
||||
try {
|
||||
const myMember = this.state.room.getMember(cli.getUserId());
|
||||
const inviteEvent = myMember.events.member;
|
||||
const ignoredUsers = MatrixClientPeg.get().getIgnoredUsers();
|
||||
ignoredUsers.push(inviteEvent.getSender()); // de-duped internally in the js-sdk
|
||||
await cli.setIgnoredUsers(ignoredUsers);
|
||||
|
||||
await cli.leave(this.state.roomId);
|
||||
dis.dispatch({ action: 'view_next_room' });
|
||||
this.setState({
|
||||
rejecting: false,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("Failed to reject invite: %s", error);
|
||||
|
||||
const msg = error.message ? error.message : JSON.stringify(error);
|
||||
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||
Modal.createTrackedDialog('Failed to reject invite', '', ErrorDialog, {
|
||||
title: _t("Failed to reject invite"),
|
||||
description: msg,
|
||||
});
|
||||
|
||||
self.setState({
|
||||
rejecting: false,
|
||||
rejectError: error,
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
onRejectThreepidInviteButtonClicked: function(ev) {
|
||||
// We can reject 3pid invites in the same way that we accept them,
|
||||
// using /leave rather than /join. In the short term though, we
|
||||
|
@ -1671,9 +1706,11 @@ export default createReactClass({
|
|||
return (
|
||||
<div className="mx_RoomView">
|
||||
<ErrorBoundary>
|
||||
<RoomPreviewBar onJoinClick={this.onJoinButtonClicked}
|
||||
<RoomPreviewBar
|
||||
onJoinClick={this.onJoinButtonClicked}
|
||||
onForgetClick={this.onForgetClick}
|
||||
onRejectClick={this.onRejectButtonClicked}
|
||||
onRejectAndIgnoreClick={this.onRejectAndIgnoreClick}
|
||||
inviterName={inviterName}
|
||||
canPreview={false}
|
||||
joining={this.state.joining}
|
||||
|
|
|
@ -49,6 +49,7 @@ export default createReactClass({
|
|||
propTypes: {
|
||||
onJoinClick: PropTypes.func,
|
||||
onRejectClick: PropTypes.func,
|
||||
onRejectAndIgnoreClick: PropTypes.func,
|
||||
onForgetClick: PropTypes.func,
|
||||
// if inviterName is specified, the preview bar will shown an invite to the room.
|
||||
// You should also specify onRejectClick if specifiying inviterName
|
||||
|
@ -282,6 +283,7 @@ export default createReactClass({
|
|||
|
||||
render: function() {
|
||||
const Spinner = sdk.getComponent('elements.Spinner');
|
||||
const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
|
||||
|
||||
let showSpinner = false;
|
||||
let darkStyle = false;
|
||||
|
@ -292,6 +294,7 @@ export default createReactClass({
|
|||
let secondaryActionHandler;
|
||||
let secondaryActionLabel;
|
||||
let footer;
|
||||
const extraComponents = [];
|
||||
|
||||
const messageCase = this._getMessageCase();
|
||||
switch (messageCase) {
|
||||
|
@ -469,6 +472,14 @@ export default createReactClass({
|
|||
primaryActionHandler = this.props.onJoinClick;
|
||||
secondaryActionLabel = _t("Reject");
|
||||
secondaryActionHandler = this.props.onRejectClick;
|
||||
|
||||
if (this.props.onRejectAndIgnoreClick) {
|
||||
extraComponents.push(
|
||||
<AccessibleButton kind="secondary" onClick={this.props.onRejectAndIgnoreClick} key="ignore">
|
||||
{ _t("Reject & Ignore user") }
|
||||
</AccessibleButton>,
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MessageCase.ViewingRoom: {
|
||||
|
@ -505,8 +516,6 @@ export default createReactClass({
|
|||
}
|
||||
}
|
||||
|
||||
const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
|
||||
|
||||
let subTitleElements;
|
||||
if (subTitle) {
|
||||
if (!Array.isArray(subTitle)) {
|
||||
|
@ -554,6 +563,7 @@ export default createReactClass({
|
|||
</div>
|
||||
<div className="mx_RoomPreviewBar_actions">
|
||||
{ secondaryButton }
|
||||
{ extraComponents }
|
||||
{ primaryButton }
|
||||
</div>
|
||||
<div className="mx_RoomPreviewBar_footer">
|
||||
|
|
|
@ -1046,6 +1046,7 @@
|
|||
"Do you want to join %(roomName)s?": "Do you want to join %(roomName)s?",
|
||||
"<userName/> invited you": "<userName/> invited you",
|
||||
"Reject": "Reject",
|
||||
"Reject & Ignore user": "Reject & Ignore user",
|
||||
"You're previewing %(roomName)s. Want to join it?": "You're previewing %(roomName)s. Want to join it?",
|
||||
"%(roomName)s can't be previewed. Do you want to join it?": "%(roomName)s can't be previewed. Do you want to join it?",
|
||||
"%(roomName)s does not exist.": "%(roomName)s does not exist.",
|
||||
|
|
Loading…
Reference in a new issue