disambiguate devices by ID in memberinfo

pull/21833/head
Matthew Hodgson 2016-09-17 20:12:56 +01:00
parent 6e57faecb0
commit 5fa5489bbd
2 changed files with 22 additions and 3 deletions

View File

@ -145,16 +145,17 @@ export default class MemberDeviceInfo extends React.Component {
);
}
var deviceName = this.props.device.getDisplayName() || this.props.device.deviceId;
var deviceName = this.props.device.ambiguous ?
(this.props.device.getDisplayName() ? this.props.device.getDisplayName() : "") + " (" + this.props.device.deviceId + ")" :
this.props.device.getDisplayName();
var info = (
<div className="mx_MemberDeviceInfo_deviceInfo" title={ "device id: " + this.props.device.deviceId }>
<div className="mx_MemberDeviceInfo_deviceInfo">
<div className="mx_MemberDeviceInfo_deviceId">{deviceName}{indicator}</div>
</div>
);
}
// add the deviceId as a titletext to help with debugging
return (
<div className="mx_MemberDeviceInfo">
{ info }

View File

@ -115,6 +115,23 @@ module.exports = React.createClass({
}
},
_disambiguateDevices: function(devices) {
var names = Object.create(null);
for (var i = 0; i < devices.length; i++) {
var name = devices[i].getDisplayName();
var indexList = names[name] || [];
indexList.push(i);
names[name] = indexList;
}
for (name in names) {
if (names[name].length > 1) {
names[name].forEach((j)=>{
devices[j].ambiguous = true;
});
}
}
},
onDeviceVerificationChanged: function(userId, device) {
if (!this._enableDevices) {
return;
@ -199,6 +216,7 @@ module.exports = React.createClass({
return;
}
var devices = client.getStoredDevicesForUser(member.userId);
self._disambiguateDevices(devices);
self.setState({devicesLoading: false, devices: devices});
}, function(err) {
console.log("Error downloading devices", err);