You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
970 B
JavaScript
50 lines
970 B
JavaScript
'use strict';
|
|
const React = require('react');
|
|
const create = require('create-react-class');
|
|
const jdenticon = require('jdenticon');
|
|
|
|
jdenticon.config = {
|
|
lightness: {
|
|
color: [0.58, 0.66],
|
|
grayscale: [0.30, 0.90]
|
|
},
|
|
saturation: {
|
|
color: 0.66,
|
|
grayscale: 0.00
|
|
},
|
|
backColor: "#00000000"
|
|
};
|
|
|
|
let User = create({
|
|
displayName: "user",
|
|
|
|
getInitialState: function() {
|
|
let icon = jdenticon.toSvg(this.props.user.userId, 200);
|
|
let match = icon.match(/#([a-f0-9]{6})/g);
|
|
let color = '#ff0000';
|
|
/* FIXME: Replace with a .find */
|
|
for(let i=match.length-1; i>= 0; i--) {
|
|
color = match[i];
|
|
let r = color.substr(1, 2);
|
|
let g = color.substr(3, 2);
|
|
let b = color.substr(5, 2);
|
|
if (r != g && g != b) { // not greyscale
|
|
break;
|
|
}
|
|
}
|
|
return {
|
|
color: color
|
|
};
|
|
},
|
|
|
|
render: function() {
|
|
return (
|
|
<div className="user" style={{color: this.state.color}}>
|
|
{this.props.user.displayName}
|
|
</div>
|
|
);
|
|
}
|
|
});
|
|
|
|
module.exports = User;
|