simplify avatar logic slightly

This commit is contained in:
Matthew Hodgson 2015-11-30 14:39:29 +00:00
parent 2002af6c7d
commit 960cc2d6b4
3 changed files with 12 additions and 50 deletions

View file

@ -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=";
}
} }
} }

View file

@ -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)) {

View file

@ -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() {