diff --git a/skins/base/views/molecules/ChangeAvatar.js b/skins/base/views/molecules/ChangeAvatar.js
index 021b4ad6..808da629 100644
--- a/skins/base/views/molecules/ChangeAvatar.js
+++ b/skins/base/views/molecules/ChangeAvatar.js
@@ -20,11 +20,23 @@ var React = require('react');
var ChangeAvatarController = require("../../../../src/controllers/molecules/ChangeAvatar");
+var Loader = require("react-loader");
+
module.exports = React.createClass({
displayName: 'ChangeAvatar',
mixins: [ChangeAvatarController],
+ onFileSelected: function(ev) {
+ this.setAvatarFromFile(ev.target.files[0]);
+ },
+
+ onError: function(error) {
+ this.setState({
+ errorText: "Failed to set profile picture!"
+ });
+ },
+
render: function() {
switch (this.state.phase) {
case this.Phases.Display:
@@ -33,7 +45,9 @@ module.exports = React.createClass({
diff --git a/src/TextForEvent.js b/src/TextForEvent.js
index ed9eb8a4..d3a38fcd 100644
--- a/src/TextForEvent.js
+++ b/src/TextForEvent.js
@@ -21,11 +21,18 @@ function textForMemberEvent(ev) {
return ev.getSender() + " set their display name to " + ev.getContent().displayname;
} else if (ev.getPrevContent().displayname && !ev.getContent().displayname) {
return ev.getSender() + " removed their display name";
+ } else if (ev.getPrevContent().avatar_url && !ev.getContent().avatar_url) {
+ return ev.getSender() + " removed their profile picture";
+ } else if (ev.getPrevContent().avatar_url && ev.getContent().avatar_url) {
+ return ev.getSender() + " changed their profile picture";
+ } else if (!ev.getPrevContent().avatar_url && ev.getContent().avatar_url) {
+ return ev.getSender() + " set a profile picture";
}
} else {
if (!ev.target) console.warn("Join message has no target! -- " + ev.getContent().state_key);
return targetName + " joined the room.";
}
+ return '';
case 'leave':
if (ev.getSender() === ev.getStateKey()) {
return targetName + " left the room.";
diff --git a/src/controllers/molecules/ChangeAvatar.js b/src/controllers/molecules/ChangeAvatar.js
index 2dd492b6..0b25c15d 100644
--- a/src/controllers/molecules/ChangeAvatar.js
+++ b/src/controllers/molecules/ChangeAvatar.js
@@ -46,7 +46,28 @@ module.exports = {
}
},
- uploadNewAvatar: function() {
+ setAvatarFromFile: function(file) {
+ var newUrl = null;
+ this.setState({
+ phase: this.Phases.Uploading
+ });
+ var self = this;
+ MatrixClientPeg.get().uploadContent(file).then(function(url) {
+ newUrl = url;
+ return MatrixClientPeg.get().setProfileInfo('avatar_url', {
+ avatar_url: url
+ });
+ }).done(function() {
+ self.setState({
+ phase: self.Phases.Display,
+ avatarUrl: MatrixClientPeg.get().mxcUrlToHttp(newUrl)
+ });
+ }, function(error) {
+ self.setState({
+ phase: this.Phases.Error
+ });
+ self.onError(error);
+ });
},
}