diff --git a/src/TextForEvent.js b/src/TextForEvent.js index 6e15d51cc4..10e529dfa7 100644 --- a/src/TextForEvent.js +++ b/src/TextForEvent.js @@ -78,6 +78,9 @@ function textForMemberEvent(ev) { if (ConferenceHandler && ConferenceHandler.isConferenceUser(ev.getStateKey())) { return "VoIP conference finished"; } + else if (ev.getPrevContent().membership === "invite") { + return targetName + " rejected the invitation."; + } else { return targetName + " left the room."; } @@ -151,6 +154,28 @@ function textForThreePidInviteEvent(event) { " to join the room."; }; +function textForHistoryVisibilityEvent(event) { + var senderName = event.sender ? event.sender.name : event.getSender(); + var vis = event.getContent().history_visibility; + var text = senderName + " made future room history visible to "; + if (vis === "invited") { + text += "all room members, from the point they are invited."; + } + else if (vis === "joined") { + text += "all room members, from the point they joined."; + } + else if (vis === "shared") { + text += "all room members."; + } + else if (vis === "world_readable") { + text += "anyone."; + } + else { + text += " unknown (" + vis + ")"; + } + return text; +}; + var handlers = { 'm.room.message': textForMessageEvent, 'm.room.name': textForRoomNameEvent, @@ -159,7 +184,8 @@ var handlers = { 'm.call.invite': textForCallInviteEvent, 'm.call.answer': textForCallAnswerEvent, 'm.call.hangup': textForCallHangupEvent, - 'm.room.third_party_invite': textForThreePidInviteEvent + 'm.room.third_party_invite': textForThreePidInviteEvent, + 'm.room.history_visibility': textForHistoryVisibilityEvent, }; module.exports = { diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 21174be966..51182cc17d 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -191,7 +191,7 @@ module.exports = React.createClass({ } }, - _registerAsGuest: function() { + _registerAsGuest: function(showWarning) { var self = this; console.log("Doing guest login on %s", this.getCurrentHsUrl()); var hsUrl = this.getCurrentHsUrl(); @@ -209,6 +209,13 @@ module.exports = React.createClass({ guest: true }); }, function(err) { + if (showWarning) { + var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); + Modal.createDialog(ErrorDialog, { + title: "Failed to login as guest", + description: err.data + }); + } console.error("Failed to register as guest: " + err + " " + err.data); self._setAutoRegisterAsGuest(false); }); @@ -1096,7 +1103,7 @@ module.exports = React.createClass({ customHsUrl={this.getCurrentHsUrl()} customIsUrl={this.getCurrentIsUrl()} onForgotPasswordClick={this.onForgotPasswordClick} - onLoginAsGuestClick={this.props.enableGuest && this.props.config && this.props.config.default_hs_url ? this._registerAsGuest: undefined} + onLoginAsGuestClick={this.props.enableGuest && this.props.config && this.props.config.default_hs_url ? this._registerAsGuest.bind(this, true) : undefined} onCancelClick={ this.state.guestCreds ? this.onReturnToGuestClick : null } /> ); diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index 20a058719b..dcb16f7231 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -1217,11 +1217,10 @@ module.exports = React.createClass({ /> ); } - else if (this.state.canPeek && - (!myMember || myMember.membership !== "join")) { + else if (!myMember || myMember.membership !== "join") { aux = ( ); } diff --git a/src/components/structures/ScrollPanel.js b/src/components/structures/ScrollPanel.js index 129cbd4581..9b85854016 100644 --- a/src/components/structures/ScrollPanel.js +++ b/src/components/structures/ScrollPanel.js @@ -19,7 +19,7 @@ var ReactDOM = require("react-dom"); var GeminiScrollbar = require('react-gemini-scrollbar'); var q = require("q"); -var DEBUG_SCROLL = true; +var DEBUG_SCROLL = false; if (DEBUG_SCROLL) { // using bind means that we get to keep useful line numbers in the console diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js index f9624a54d7..bf66e43ab8 100644 --- a/src/components/structures/UserSettings.js +++ b/src/components/structures/UserSettings.js @@ -90,6 +90,15 @@ module.exports = React.createClass({ }, onAvatarPickerClick: function(ev) { + if (MatrixClientPeg.get().isGuest()) { + var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); + Modal.createDialog(ErrorDialog, { + title: "Error", + description: "Guests can't set avatars. Please register.", + }); + return; + } + if (this.refs.file_label) { this.refs.file_label.click(); } @@ -271,7 +280,7 @@ module.exports = React.createClass({ var addThreepidSection; if (this.state.email_add_pending) { addThreepidSection = ; - } else { + } else if (!MatrixClientPeg.get().isGuest()) { addThreepidSection = (
diff --git a/src/components/views/rooms/EventTile.js b/src/components/views/rooms/EventTile.js index 123026aa93..c9e74f521f 100644 --- a/src/components/views/rooms/EventTile.js +++ b/src/components/views/rooms/EventTile.js @@ -44,7 +44,8 @@ var eventTileTypes = { 'm.call.hangup' : 'messages.TextualEvent', 'm.room.name' : 'messages.TextualEvent', 'm.room.topic' : 'messages.TextualEvent', - 'm.room.third_party_invite': 'messages.TextualEvent' + 'm.room.third_party_invite' : 'messages.TextualEvent', + 'm.room.history_visibility' : 'messages.TextualEvent', }; var MAX_READ_AVATARS = 5; diff --git a/src/components/views/rooms/RoomSettings.js b/src/components/views/rooms/RoomSettings.js index eca4dc074b..4311f1b23d 100644 --- a/src/components/views/rooms/RoomSettings.js +++ b/src/components/views/rooms/RoomSettings.js @@ -450,7 +450,7 @@ module.exports = React.createClass({ - Members only (since the room began) + Members only (since the point in time of selecting this option)