diff --git a/src/Avatar.js b/src/Avatar.js
index 02025a9384..c919630f96 100644
--- a/src/Avatar.js
+++ b/src/Avatar.js
@@ -24,7 +24,9 @@ module.exports = {
MatrixClientPeg.get().getHomeserverUrl(),
width,
height,
- resizeMethod
+ resizeMethod,
+ false,
+ false
);
if (!url) {
// member can be null here currently since on invites, the JS SDK
@@ -36,18 +38,12 @@ module.exports = {
},
defaultAvatarUrlForString: function(s) {
+ var images = [ '76cfa6', '50e2c2', 'f4c371' ];
var total = 0;
for (var i = 0; i < s.length; ++i) {
total += s.charCodeAt(i);
}
- switch (total % 3) {
- 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=";
- }
+ return 'img/' + images[total % images.length] + '.png';
}
}
diff --git a/src/components/views/avatars/MemberAvatar.js b/src/components/views/avatars/MemberAvatar.js
index f65f11256b..4a6c9fb92e 100644
--- a/src/components/views/avatars/MemberAvatar.js
+++ b/src/components/views/avatars/MemberAvatar.js
@@ -43,10 +43,7 @@ module.exports = React.createClass({
},
defaultAvatarUrl: function(member, width, height, resizeMethod) {
- if (this.skinnedDefaultAvatarUrl) {
- return this.skinnedDefaultAvatarUrl(member, width, height, resizeMethod);
- }
- return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAIAAAADnC86AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNrszQENADAIACB9QjNbxSKP4eagAFnTseHFErFYLBaLxWKxWCwWi8Vi8cX4CzAABSwCRWJw31gAAAAASUVORK5CYII=";
+ return Avatar.defaultAvatarUrlForString(member.userId);
},
onError: function(ev) {
@@ -60,22 +57,10 @@ module.exports = React.createClass({
},
_computeUrl: function() {
- var url = this.props.member.getAvatarUrl(
- MatrixClientPeg.get().getHomeserverUrl(),
- this.props.width,
- this.props.height,
- this.props.resizeMethod,
- false
- );
- if (!url) {
- url = this.defaultAvatarUrl(
- this.props.member,
- this.props.width,
- this.props.height,
- this.props.resizeMethod
- );
- }
- return url;
+ return Avatar.avatarUrlForMember(this.props.member,
+ this.props.width,
+ this.props.height,
+ this.props.resizeMethod);
},
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() {
// XXX: recalculates default avatar url constantly
if (this.state.imageUrl === this.defaultAvatarUrl(this.props.member)) {
diff --git a/src/components/views/avatars/RoomAvatar.js b/src/components/views/avatars/RoomAvatar.js
index 55f0e92cc1..95ec39de2e 100644
--- a/src/components/views/avatars/RoomAvatar.js
+++ b/src/components/views/avatars/RoomAvatar.js
@@ -15,6 +15,7 @@ limitations under the License.
*/
var React = require('react');
var MatrixClientPeg = require('../../../MatrixClientPeg');
+var Avatar = require('../../../Avatar');
module.exports = React.createClass({
displayName: 'RoomAvatar',
@@ -134,12 +135,7 @@ module.exports = React.createClass({
},
getFallbackAvatar: function() {
- var images = [ '76cfa6', '50e2c2', 'f4c371' ];
- 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';
+ return Avatar.defaultAvatarUrlForString(this.props.room.roomId);
},
render: function() {
diff --git a/src/components/views/messages/MFileMessage.js b/src/components/views/messages/MFileBody.js
similarity index 98%
rename from src/components/views/messages/MFileMessage.js
rename to src/components/views/messages/MFileBody.js
index 93e366a2cd..be7f2f0593 100644
--- a/src/components/views/messages/MFileMessage.js
+++ b/src/components/views/messages/MFileBody.js
@@ -21,7 +21,7 @@ var filesize = require('filesize');
var MatrixClientPeg = require('../../../MatrixClientPeg');
module.exports = React.createClass({
- displayName: 'MFileMessage',
+ displayName: 'MFileBody',
presentableTextForFile: function(content) {
var linkText = 'Attachment';
diff --git a/src/components/views/messages/MImageMessage.js b/src/components/views/messages/MImageBody.js
similarity index 99%
rename from src/components/views/messages/MImageMessage.js
rename to src/components/views/messages/MImageBody.js
index dee5c37c1e..93e2ce1b06 100644
--- a/src/components/views/messages/MImageMessage.js
+++ b/src/components/views/messages/MImageBody.js
@@ -24,7 +24,7 @@ var Modal = require('../../../Modal');
var sdk = require('../../../index');
module.exports = React.createClass({
- displayName: 'MImageMessage',
+ displayName: 'MImageBody',
thumbHeight: function(fullWidth, fullHeight, thumbWidth, thumbHeight) {
if (!fullWidth || !fullHeight) {
diff --git a/src/components/views/messages/MRoomMemberEvent.js b/src/components/views/messages/MRoomMemberEvent.js
deleted file mode 100644
index 6e73519f2e..0000000000
--- a/src/components/views/messages/MRoomMemberEvent.js
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-Copyright 2015 OpenMarket Ltd
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-'use strict';
-
-var React = require('react');
-
-var sdk = require('../../../index');
-var TextForEvent = require('../../../TextForEvent');
-
-module.exports = React.createClass({
- displayName: 'MRoomMemberEvent',
-
- getMemberEventText: function() {
- return TextForEvent.textForEvent(this.props.mxEvent);
- },
-
- render: function() {
- // XXX: for now, just cheekily borrow the css from message tile...
- var timestamp = this.props.last ?