mirror of https://github.com/vector-im/riot-web
show a spinner on MemberInfo when updating a member. and label 'disinvite' correctly
parent
bfec6d4ed9
commit
4b1ff51a42
|
@ -57,7 +57,8 @@ module.exports = React.createClass({
|
||||||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||||
var roomId = this.props.member.roomId;
|
var roomId = this.props.member.roomId;
|
||||||
var target = this.props.member.userId;
|
var target = this.props.member.userId;
|
||||||
MatrixClientPeg.get().kick(roomId, target).done(function() {
|
this.setState({ updating: this.state.updating + 1 });
|
||||||
|
MatrixClientPeg.get().kick(roomId, target).then(function() {
|
||||||
// NO-OP; rely on the m.room.member event coming down else we could
|
// NO-OP; rely on the m.room.member event coming down else we could
|
||||||
// get out of sync if we force setState here!
|
// get out of sync if we force setState here!
|
||||||
console.log("Kick success");
|
console.log("Kick success");
|
||||||
|
@ -67,7 +68,9 @@ module.exports = React.createClass({
|
||||||
description: err.message
|
description: err.message
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
).finally(()=>{
|
||||||
|
this.setState({ updating: this.state.updating - 1 });
|
||||||
|
});
|
||||||
this.props.onFinished();
|
this.props.onFinished();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -75,7 +78,8 @@ module.exports = React.createClass({
|
||||||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||||
var roomId = this.props.member.roomId;
|
var roomId = this.props.member.roomId;
|
||||||
var target = this.props.member.userId;
|
var target = this.props.member.userId;
|
||||||
MatrixClientPeg.get().ban(roomId, target).done(
|
this.setState({ updating: this.state.updating + 1 });
|
||||||
|
MatrixClientPeg.get().ban(roomId, target).then(
|
||||||
function() {
|
function() {
|
||||||
// NO-OP; rely on the m.room.member event coming down else we could
|
// NO-OP; rely on the m.room.member event coming down else we could
|
||||||
// get out of sync if we force setState here!
|
// get out of sync if we force setState here!
|
||||||
|
@ -86,7 +90,9 @@ module.exports = React.createClass({
|
||||||
description: err.message
|
description: err.message
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
).finally(()=>{
|
||||||
|
this.setState({ updating: this.state.updating - 1 });
|
||||||
|
});
|
||||||
this.props.onFinished();
|
this.props.onFinished();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -122,7 +128,8 @@ module.exports = React.createClass({
|
||||||
level = parseInt(level);
|
level = parseInt(level);
|
||||||
|
|
||||||
if (level !== NaN) {
|
if (level !== NaN) {
|
||||||
MatrixClientPeg.get().setPowerLevel(roomId, target, level, powerLevelEvent).done(
|
this.setState({ updating: this.state.updating + 1 });
|
||||||
|
MatrixClientPeg.get().setPowerLevel(roomId, target, level, powerLevelEvent).then(
|
||||||
function() {
|
function() {
|
||||||
// NO-OP; rely on the m.room.member event coming down else we could
|
// NO-OP; rely on the m.room.member event coming down else we could
|
||||||
// get out of sync if we force setState here!
|
// get out of sync if we force setState here!
|
||||||
|
@ -133,9 +140,11 @@ module.exports = React.createClass({
|
||||||
description: err.message
|
description: err.message
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
).finally(()=>{
|
||||||
|
this.setState({ updating: this.state.updating - 1 });
|
||||||
|
});
|
||||||
}
|
}
|
||||||
this.props.onFinished();
|
this.props.onFinished();
|
||||||
},
|
},
|
||||||
|
|
||||||
onModToggle: function() {
|
onModToggle: function() {
|
||||||
|
@ -164,7 +173,8 @@ module.exports = React.createClass({
|
||||||
if (modLevel > 50 && defaultLevel < 50) modLevel = 50; // try to stick with the vector level defaults
|
if (modLevel > 50 && defaultLevel < 50) modLevel = 50; // try to stick with the vector level defaults
|
||||||
// toggle the level
|
// toggle the level
|
||||||
var newLevel = this.state.isTargetMod ? defaultLevel : modLevel;
|
var newLevel = this.state.isTargetMod ? defaultLevel : modLevel;
|
||||||
MatrixClientPeg.get().setPowerLevel(roomId, target, parseInt(newLevel), powerLevelEvent).done(
|
this.setState({ updating: this.state.updating + 1 });
|
||||||
|
MatrixClientPeg.get().setPowerLevel(roomId, target, parseInt(newLevel), powerLevelEvent).then(
|
||||||
function() {
|
function() {
|
||||||
// NO-OP; rely on the m.room.member event coming down else we could
|
// NO-OP; rely on the m.room.member event coming down else we could
|
||||||
// get out of sync if we force setState here!
|
// get out of sync if we force setState here!
|
||||||
|
@ -183,12 +193,15 @@ module.exports = React.createClass({
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
).finally(()=>{
|
||||||
this.props.onFinished();
|
this.setState({ updating: this.state.updating - 1 });
|
||||||
|
});
|
||||||
|
this.props.onFinished();
|
||||||
},
|
},
|
||||||
|
|
||||||
_applyPowerChange: function(roomId, target, powerLevel, powerLevelEvent) {
|
_applyPowerChange: function(roomId, target, powerLevel, powerLevelEvent) {
|
||||||
MatrixClientPeg.get().setPowerLevel(roomId, target, parseInt(powerLevel), powerLevelEvent).done(
|
this.setState({ updating: this.state.updating + 1 });
|
||||||
|
MatrixClientPeg.get().setPowerLevel(roomId, target, parseInt(powerLevel), powerLevelEvent).then(
|
||||||
function() {
|
function() {
|
||||||
// NO-OP; rely on the m.room.member event coming down else we could
|
// NO-OP; rely on the m.room.member event coming down else we could
|
||||||
// get out of sync if we force setState here!
|
// get out of sync if we force setState here!
|
||||||
|
@ -199,7 +212,9 @@ module.exports = React.createClass({
|
||||||
description: err.message
|
description: err.message
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
).finally(()=>{
|
||||||
|
this.setState({ updating: this.state.updating - 1 });
|
||||||
|
});
|
||||||
this.props.onFinished();
|
this.props.onFinished();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -249,7 +264,7 @@ module.exports = React.createClass({
|
||||||
else {
|
else {
|
||||||
this._applyPowerChange(roomId, target, powerLevel, powerLevelEvent);
|
this._applyPowerChange(roomId, target, powerLevel, powerLevelEvent);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onChatClick: function() {
|
onChatClick: function() {
|
||||||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||||
|
@ -300,19 +315,17 @@ module.exports = React.createClass({
|
||||||
this.props.onFinished();
|
this.props.onFinished();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
self.setState({ creatingRoom: true });
|
|
||||||
|
|
||||||
if (MatrixClientPeg.get().isGuest()) {
|
if (MatrixClientPeg.get().isGuest()) {
|
||||||
self.setState({ creatingRoom: false });
|
|
||||||
var NeedToRegisterDialog = sdk.getComponent("dialogs.NeedToRegisterDialog");
|
var NeedToRegisterDialog = sdk.getComponent("dialogs.NeedToRegisterDialog");
|
||||||
Modal.createDialog(NeedToRegisterDialog, {
|
Modal.createDialog(NeedToRegisterDialog, {
|
||||||
title: "Please Register",
|
title: "Please Register",
|
||||||
description: "Guest users can't create new rooms. Please register to create room and start a chat."
|
description: "Guest users can't create new rooms. Please register to create room and start a chat."
|
||||||
});
|
});
|
||||||
self.props.onFinished();
|
self.props.onFinished();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.setState({ updating: self.state.updating + 1 });
|
||||||
MatrixClientPeg.get().createRoom({
|
MatrixClientPeg.get().createRoom({
|
||||||
// XXX: FIXME: deduplicate this with "view_create_room" in MatrixChat
|
// XXX: FIXME: deduplicate this with "view_create_room" in MatrixChat
|
||||||
invite: [this.props.member.userId],
|
invite: [this.props.member.userId],
|
||||||
|
@ -328,24 +341,24 @@ module.exports = React.createClass({
|
||||||
type: 'm.room.guest_access',
|
type: 'm.room.guest_access',
|
||||||
state_key: '',
|
state_key: '',
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
}).done(
|
}).then(
|
||||||
function(res) {
|
function(res) {
|
||||||
self.setState({ creatingRoom: false });
|
|
||||||
dis.dispatch({
|
dis.dispatch({
|
||||||
action: 'view_room',
|
action: 'view_room',
|
||||||
room_id: res.room_id
|
room_id: res.room_id
|
||||||
});
|
});
|
||||||
self.props.onFinished();
|
self.props.onFinished();
|
||||||
}, function(err) {
|
}, function(err) {
|
||||||
self.setState({ creatingRoom: false });
|
|
||||||
Modal.createDialog(ErrorDialog, {
|
Modal.createDialog(ErrorDialog, {
|
||||||
title: "Failure to start chat",
|
title: "Failure to start chat",
|
||||||
description: err.message
|
description: err.message
|
||||||
});
|
});
|
||||||
self.props.onFinished();
|
self.props.onFinished();
|
||||||
}
|
}
|
||||||
);
|
).finally(()=>{
|
||||||
|
self.setState({ updating: self.state.updating - 1 });
|
||||||
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -367,7 +380,7 @@ module.exports = React.createClass({
|
||||||
},
|
},
|
||||||
muted: false,
|
muted: false,
|
||||||
isTargetMod: false,
|
isTargetMod: false,
|
||||||
creatingRoom: false
|
updating: 0,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -470,14 +483,14 @@ module.exports = React.createClass({
|
||||||
startChat = <BottomLeftMenuTile collapsed={ false } img="img/create-big.svg" label="Start chat" onClick={ this.onChatClick }/>
|
startChat = <BottomLeftMenuTile collapsed={ false } img="img/create-big.svg" label="Start chat" onClick={ this.onChatClick }/>
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.state.creatingRoom) {
|
if (this.state.updating) {
|
||||||
var Loader = sdk.getComponent("elements.Spinner");
|
var Loader = sdk.getComponent("elements.Spinner");
|
||||||
spinner = <Loader imgClassName="mx_ContextualMenu_spinner"/>;
|
spinner = <Loader imgClassName="mx_ContextualMenu_spinner"/>;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.state.can.kick) {
|
if (this.state.can.kick) {
|
||||||
kickButton = <div className="mx_MemberInfo_field" onClick={this.onKick}>
|
kickButton = <div className="mx_MemberInfo_field" onClick={this.onKick}>
|
||||||
Kick
|
{ this.props.member.membership === "invite" ? "Disinvite" : "Kick" }
|
||||||
</div>;
|
</div>;
|
||||||
}
|
}
|
||||||
if (this.state.can.ban) {
|
if (this.state.can.ban) {
|
||||||
|
@ -503,7 +516,7 @@ module.exports = React.createClass({
|
||||||
|
|
||||||
var adminTools;
|
var adminTools;
|
||||||
if (kickButton || banButton || muteButton || giveModButton) {
|
if (kickButton || banButton || muteButton || giveModButton) {
|
||||||
adminTools =
|
adminTools =
|
||||||
<div>
|
<div>
|
||||||
<h3>Admin tools</h3>
|
<h3>Admin tools</h3>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue