Fix member power levels in room settings
Fixes https://github.com/vector-im/riot-web/issues/10736 We didn't have an onChange property on the PowerSelector component
This commit is contained in:
parent
917700a1fc
commit
2e3e2ec420
1 changed files with 33 additions and 3 deletions
|
@ -151,6 +151,22 @@ export default class RolesRoomSettingsTab extends React.Component {
|
||||||
client.sendStateEvent(this.props.roomId, "m.room.power_levels", plContent);
|
client.sendStateEvent(this.props.roomId, "m.room.power_levels", plContent);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
_onUserPowerLevelChanged = (value, powerLevelKey) => {
|
||||||
|
const client = MatrixClientPeg.get();
|
||||||
|
const room = client.getRoom(this.props.roomId);
|
||||||
|
const plEvent = room.currentState.getStateEvents('m.room.power_levels', '');
|
||||||
|
let plContent = plEvent ? (plEvent.getContent() || {}) : {};
|
||||||
|
|
||||||
|
// Clone the power levels just in case
|
||||||
|
plContent = Object.assign({}, plContent);
|
||||||
|
|
||||||
|
// powerLevelKey should be a user ID
|
||||||
|
if (!plContent['users']) plContent['users'] = {};
|
||||||
|
plContent['users'][powerLevelKey] = value;
|
||||||
|
|
||||||
|
client.sendStateEvent(this.props.roomId, "m.room.power_levels", plContent);
|
||||||
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const PowerSelector = sdk.getComponent('elements.PowerSelector');
|
const PowerSelector = sdk.getComponent('elements.PowerSelector');
|
||||||
|
|
||||||
|
@ -220,15 +236,29 @@ export default class RolesRoomSettingsTab extends React.Component {
|
||||||
const privilegedUsers = [];
|
const privilegedUsers = [];
|
||||||
const mutedUsers = [];
|
const mutedUsers = [];
|
||||||
|
|
||||||
Object.keys(userLevels).forEach(function(user) {
|
Object.keys(userLevels).forEach((user) => {
|
||||||
const canChange = userLevels[user] < currentUserLevel && canChangeLevels;
|
const canChange = userLevels[user] < currentUserLevel && canChangeLevels;
|
||||||
if (userLevels[user] > defaultUserLevel) { // privileged
|
if (userLevels[user] > defaultUserLevel) { // privileged
|
||||||
privilegedUsers.push(
|
privilegedUsers.push(
|
||||||
<PowerSelector value={userLevels[user]} disabled={!canChange} label={user} key={user} />,
|
<PowerSelector
|
||||||
|
value={userLevels[user]}
|
||||||
|
disabled={!canChange}
|
||||||
|
label={user}
|
||||||
|
key={user}
|
||||||
|
powerLevelKey={user} // Will be sent as the second parameter to `onChange`
|
||||||
|
onChange={this._onUserPowerLevelChanged}
|
||||||
|
/>,
|
||||||
);
|
);
|
||||||
} else if (userLevels[user] < defaultUserLevel) { // muted
|
} else if (userLevels[user] < defaultUserLevel) { // muted
|
||||||
mutedUsers.push(
|
mutedUsers.push(
|
||||||
<PowerSelector value={userLevels[user]} disabled={!canChange} label={user} key={user} />,
|
<PowerSelector
|
||||||
|
value={userLevels[user]}
|
||||||
|
disabled={!canChange}
|
||||||
|
label={user}
|
||||||
|
key={user}
|
||||||
|
powerLevelKey={user} // Will be sent as the second parameter to `onChange`
|
||||||
|
onChange={this._onUserPowerLevelChanged}
|
||||||
|
/>,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue