simplify avatar logic slightly
This commit is contained in:
parent
2002af6c7d
commit
960cc2d6b4
3 changed files with 12 additions and 50 deletions
|
@ -24,7 +24,9 @@ module.exports = {
|
||||||
MatrixClientPeg.get().getHomeserverUrl(),
|
MatrixClientPeg.get().getHomeserverUrl(),
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
resizeMethod
|
resizeMethod,
|
||||||
|
false,
|
||||||
|
false
|
||||||
);
|
);
|
||||||
if (!url) {
|
if (!url) {
|
||||||
// member can be null here currently since on invites, the JS SDK
|
// member can be null here currently since on invites, the JS SDK
|
||||||
|
@ -36,18 +38,12 @@ module.exports = {
|
||||||
},
|
},
|
||||||
|
|
||||||
defaultAvatarUrlForString: function(s) {
|
defaultAvatarUrlForString: function(s) {
|
||||||
|
var images = [ '76cfa6', '50e2c2', 'f4c371' ];
|
||||||
var total = 0;
|
var total = 0;
|
||||||
for (var i = 0; i < s.length; ++i) {
|
for (var i = 0; i < s.length; ++i) {
|
||||||
total += s.charCodeAt(i);
|
total += s.charCodeAt(i);
|
||||||
}
|
}
|
||||||
switch (total % 3) {
|
return 'img/' + images[total % images.length] + '.png';
|
||||||
case 0:
|
|
||||||
return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAIAAAADnC86AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNrszQENADAIACB9QjNbxSKP4eagAFnTseHFErFYLBaLxWKxWCwWi8Vi8cX4CzAABSwCRWJw31gAAAAASUVORK5CYII=";
|
|
||||||
case 1:
|
|
||||||
return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAIAAAADnC86AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNrszQENADAIACB9chOaxgCP4eagAFk9seHFErFYLBaLxWKxWCwWi8Vi8cX4CzAAtKMCks/JG8MAAAAASUVORK5CYII=";
|
|
||||||
case 2:
|
|
||||||
return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAIAAAADnC86AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNrszQENADAIACB9YzNayQCP4eagADldseHFErFYLBaLxWKxWCwWi8Vi8cX4CzAAyiACeHwPiu4AAAAASUVORK5CYII=";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,10 +43,7 @@ module.exports = React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
defaultAvatarUrl: function(member, width, height, resizeMethod) {
|
defaultAvatarUrl: function(member, width, height, resizeMethod) {
|
||||||
if (this.skinnedDefaultAvatarUrl) {
|
return Avatar.defaultAvatarUrlForString(member.userId);
|
||||||
return this.skinnedDefaultAvatarUrl(member, width, height, resizeMethod);
|
|
||||||
}
|
|
||||||
return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAIAAAADnC86AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNrszQENADAIACB9QjNbxSKP4eagAFnTseHFErFYLBaLxWKxWCwWi8Vi8cX4CzAABSwCRWJw31gAAAAASUVORK5CYII=";
|
|
||||||
},
|
},
|
||||||
|
|
||||||
onError: function(ev) {
|
onError: function(ev) {
|
||||||
|
@ -60,22 +57,10 @@ module.exports = React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
_computeUrl: function() {
|
_computeUrl: function() {
|
||||||
var url = this.props.member.getAvatarUrl(
|
return Avatar.avatarUrlForMember(this.props.member,
|
||||||
MatrixClientPeg.get().getHomeserverUrl(),
|
|
||||||
this.props.width,
|
this.props.width,
|
||||||
this.props.height,
|
this.props.height,
|
||||||
this.props.resizeMethod,
|
this.props.resizeMethod);
|
||||||
false
|
|
||||||
);
|
|
||||||
if (!url) {
|
|
||||||
url = this.defaultAvatarUrl(
|
|
||||||
this.props.member,
|
|
||||||
this.props.width,
|
|
||||||
this.props.height,
|
|
||||||
this.props.resizeMethod
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return url;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
refreshUrl: function() {
|
refreshUrl: function() {
|
||||||
|
@ -95,21 +80,6 @@ module.exports = React.createClass({
|
||||||
|
|
||||||
///////////////
|
///////////////
|
||||||
|
|
||||||
|
|
||||||
avatarUrlForMember: function(member) {
|
|
||||||
return Avatar.avatarUrlForMember(
|
|
||||||
member,
|
|
||||||
this.props.member,
|
|
||||||
this.props.width,
|
|
||||||
this.props.height,
|
|
||||||
this.props.resizeMethod
|
|
||||||
);
|
|
||||||
},
|
|
||||||
|
|
||||||
skinnedDefaultAvatarUrl: function(member, width, height, resizeMethod) {
|
|
||||||
return Avatar.defaultAvatarUrlForString(member.userId);
|
|
||||||
},
|
|
||||||
|
|
||||||
render: function() {
|
render: function() {
|
||||||
// XXX: recalculates default avatar url constantly
|
// XXX: recalculates default avatar url constantly
|
||||||
if (this.state.imageUrl === this.defaultAvatarUrl(this.props.member)) {
|
if (this.state.imageUrl === this.defaultAvatarUrl(this.props.member)) {
|
||||||
|
|
|
@ -15,6 +15,7 @@ limitations under the License.
|
||||||
*/
|
*/
|
||||||
var React = require('react');
|
var React = require('react');
|
||||||
var MatrixClientPeg = require('../../../MatrixClientPeg');
|
var MatrixClientPeg = require('../../../MatrixClientPeg');
|
||||||
|
var Avatar = require('../../../Avatar');
|
||||||
|
|
||||||
module.exports = React.createClass({
|
module.exports = React.createClass({
|
||||||
displayName: 'RoomAvatar',
|
displayName: 'RoomAvatar',
|
||||||
|
@ -134,12 +135,7 @@ module.exports = React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
getFallbackAvatar: function() {
|
getFallbackAvatar: function() {
|
||||||
var images = [ '76cfa6', '50e2c2', 'f4c371' ];
|
return Avatar.defaultAvatarUrlForString(this.props.room.roomId);
|
||||||
var total = 0;
|
|
||||||
for (var i = 0; i < this.props.room.roomId.length; ++i) {
|
|
||||||
total += this.props.room.roomId.charCodeAt(i);
|
|
||||||
}
|
|
||||||
return 'img/' + images[total % images.length] + '.png';
|
|
||||||
},
|
},
|
||||||
|
|
||||||
render: function() {
|
render: function() {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue