diff --git a/src/skins/vector/views/atoms/RoomAvatar.js b/src/skins/vector/views/atoms/RoomAvatar.js index 39b995a7a5..3d3463e272 100644 --- a/src/skins/vector/views/atoms/RoomAvatar.js +++ b/src/skins/vector/views/atoms/RoomAvatar.js @@ -43,9 +43,13 @@ module.exports = React.createClass({ }, render: function() { + var style = { + 'max-width': this.props.width, + 'max-height': this.props.height, + }; return ( ); } diff --git a/src/skins/vector/views/molecules/ChangeAvatar.js b/src/skins/vector/views/molecules/ChangeAvatar.js index 52a59e3f8b..ec10e4bf9b 100644 --- a/src/skins/vector/views/molecules/ChangeAvatar.js +++ b/src/skins/vector/views/molecules/ChangeAvatar.js @@ -18,6 +18,7 @@ limitations under the License. var React = require('react'); +var sdk = require('matrix-react-sdk') var ChangeAvatarController = require('matrix-react-sdk/lib/controllers/molecules/ChangeAvatar') var Loader = require("react-loader"); @@ -28,6 +29,7 @@ module.exports = React.createClass({ mixins: [ChangeAvatarController], onFileSelected: function(ev) { + this.avatarSet = true; this.setAvatarFromFile(ev.target.files[0]); }, @@ -38,13 +40,23 @@ module.exports = React.createClass({ }, render: function() { + var RoomAvatar = sdk.getComponent('atoms.RoomAvatar'); + var avatarImg; + // Having just set an avatar we just display that since it will take a little + // time to propagate through to the RoomAvatar. + if (this.props.room && !this.avatarSet) { + avatarImg = ; + } else { + avatarImg = ; + } + switch (this.state.phase) { case this.Phases.Display: case this.Phases.Error: return (
- + {avatarImg}
Upload new: diff --git a/src/skins/vector/views/molecules/RoomSettings.js b/src/skins/vector/views/molecules/RoomSettings.js index d6d36a13b3..bbba0fccf8 100644 --- a/src/skins/vector/views/molecules/RoomSettings.js +++ b/src/skins/vector/views/molecules/RoomSettings.js @@ -18,6 +18,7 @@ limitations under the License. var React = require('react'); var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg'); +var sdk = require('matrix-react-sdk'); var RoomSettingsController = require('matrix-react-sdk/lib/controllers/molecules/RoomSettings') @@ -65,6 +66,8 @@ module.exports = React.createClass({ }, render: function() { + var ChangeAvatar = sdk.getComponent('molecules.ChangeAvatar'); + var topic = this.props.room.currentState.getStateEvents('m.room.topic', ''); if (topic) topic = topic.getContent().topic; @@ -76,6 +79,8 @@ module.exports = React.createClass({ var power_levels = this.props.room.currentState.getStateEvents('m.room.power_levels', ''); + var events_levels = power_levels.events || {}; + if (power_levels) { power_levels = power_levels.getContent(); @@ -91,8 +96,7 @@ module.exports = React.createClass({ if (power_levels.kick == undefined) kick_level = 50; if (power_levels.redact == undefined) redact_level = 50; - var user_levels = power_levels.users || []; - var events_levels = power_levels.events || []; + var user_levels = power_levels.users || {}; var user_id = MatrixClientPeg.get().credentials.userId; @@ -124,6 +128,20 @@ module.exports = React.createClass({ var can_change_levels = false; } + var room_avatar_level = parseInt(power_levels.state_default || 0); + if (events_levels['m.room.avatar'] !== undefined) { + room_avatar_level = events_levels['m.room.avatar']; + } + var can_set_room_avatar = current_user_level >= room_avatar_level; + + var change_avatar; + if (can_set_room_avatar) { + change_avatar =
+

Room Icon

+ +
; + } + var banned = this.props.room.getMembersWithMemership("ban"); return ( @@ -207,6 +225,7 @@ module.exports = React.createClass({ ); })}
+ {change_avatar}
); }