Merge pull request #1606 from matrix-org/luke/fix-member-info-power-level-display
Determine whether power level is custom once Roles have been determined
This commit is contained in:
commit
e7c99a71b6
1 changed files with 17 additions and 17 deletions
|
@ -20,9 +20,6 @@ import React from 'react';
|
||||||
import * as Roles from '../../../Roles';
|
import * as Roles from '../../../Roles';
|
||||||
import { _t } from '../../../languageHandler';
|
import { _t } from '../../../languageHandler';
|
||||||
|
|
||||||
let LEVEL_ROLE_MAP = {};
|
|
||||||
const reverseRoles = {};
|
|
||||||
|
|
||||||
module.exports = React.createClass({
|
module.exports = React.createClass({
|
||||||
displayName: 'PowerSelector',
|
displayName: 'PowerSelector',
|
||||||
|
|
||||||
|
@ -43,20 +40,22 @@ module.exports = React.createClass({
|
||||||
|
|
||||||
getInitialState: function() {
|
getInitialState: function() {
|
||||||
return {
|
return {
|
||||||
custom: (LEVEL_ROLE_MAP[this.props.value] === undefined),
|
levelRoleMap: {},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
componentWillMount: function() {
|
componentWillMount: function() {
|
||||||
LEVEL_ROLE_MAP = Roles.levelRoleMap();
|
// This needs to be done now because levelRoleMap has translated strings
|
||||||
Object.keys(LEVEL_ROLE_MAP).forEach(function(key) {
|
const levelRoleMap = Roles.levelRoleMap();
|
||||||
reverseRoles[LEVEL_ROLE_MAP[key]] = key;
|
this.setState({
|
||||||
});
|
levelRoleMap,
|
||||||
|
custom: levelRoleMap[this.props.value] === undefined,
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
onSelectChange: function(event) {
|
onSelectChange: function(event) {
|
||||||
this.setState({ custom: event.target.value === "Custom" });
|
this.setState({ custom: event.target.value === "SELECT_VALUE_CUSTOM" });
|
||||||
if (event.target.value !== "Custom") {
|
if (event.target.value !== "SELECT_VALUE_CUSTOM") {
|
||||||
this.props.onChange(this.getValue());
|
this.props.onChange(this.getValue());
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -74,7 +73,7 @@ module.exports = React.createClass({
|
||||||
getValue: function() {
|
getValue: function() {
|
||||||
let value;
|
let value;
|
||||||
if (this.refs.select) {
|
if (this.refs.select) {
|
||||||
value = reverseRoles[this.refs.select.value];
|
value = this.refs.select.value;
|
||||||
if (this.refs.custom) {
|
if (this.refs.custom) {
|
||||||
if (value === undefined) value = parseInt( this.refs.custom.value );
|
if (value === undefined) value = parseInt( this.refs.custom.value );
|
||||||
}
|
}
|
||||||
|
@ -96,25 +95,26 @@ module.exports = React.createClass({
|
||||||
|
|
||||||
let selectValue;
|
let selectValue;
|
||||||
if (this.state.custom) {
|
if (this.state.custom) {
|
||||||
selectValue = "Custom";
|
selectValue = "SELECT_VALUE_CUSTOM";
|
||||||
} else {
|
} else {
|
||||||
selectValue = LEVEL_ROLE_MAP[this.props.value] || "Custom";
|
selectValue = this.state.levelRoleMap[selectValue] ?
|
||||||
|
this.props.value : "SELECT_VALUE_CUSTOM";
|
||||||
}
|
}
|
||||||
let select;
|
let select;
|
||||||
if (this.props.disabled) {
|
if (this.props.disabled) {
|
||||||
select = <span>{ selectValue }</span>;
|
select = <span>{ this.state.levelRoleMap[selectValue] }</span>;
|
||||||
} else {
|
} else {
|
||||||
// Each level must have a definition in LEVEL_ROLE_MAP
|
// Each level must have a definition in this.state.levelRoleMap
|
||||||
const levels = [0, 50, 100];
|
const levels = [0, 50, 100];
|
||||||
let options = levels.map((level) => {
|
let options = levels.map((level) => {
|
||||||
return {
|
return {
|
||||||
value: LEVEL_ROLE_MAP[level],
|
value: level,
|
||||||
// Give a userDefault (users_default in the power event) of 0 but
|
// Give a userDefault (users_default in the power event) of 0 but
|
||||||
// because level !== undefined, this should never be used.
|
// because level !== undefined, this should never be used.
|
||||||
text: Roles.textualPowerLevel(level, 0),
|
text: Roles.textualPowerLevel(level, 0),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
options.push({ value: "Custom", text: _t("Custom level") });
|
options.push({ value: "SELECT_VALUE_CUSTOM", text: _t("Custom level") });
|
||||||
options = options.map((op) => {
|
options = options.map((op) => {
|
||||||
return <option value={op.value} key={op.value}>{ op.text }</option>;
|
return <option value={op.value} key={op.value}>{ op.text }</option>;
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue