From b644751ca1ac919d4b919a84f43c29388d6497eb Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 28 Aug 2017 00:16:22 +0100 Subject: [PATCH 01/11] skip direct chats which you have left in memberinfo --- src/components/views/rooms/MemberInfo.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/components/views/rooms/MemberInfo.js b/src/components/views/rooms/MemberInfo.js index 64eeddb406..4f7394fd91 100644 --- a/src/components/views/rooms/MemberInfo.js +++ b/src/components/views/rooms/MemberInfo.js @@ -620,17 +620,16 @@ module.exports = withMatrixClient(React.createClass({ const room = this.props.matrixClient.getRoom(roomId); if (room) { const me = room.getMember(this.props.matrixClient.credentials.userId); - const highlight = ( - room.getUnreadNotificationCount('highlight') > 0 || - me.membership == "invite" - ); + if (me.membership === 'leave') continue; + const highlight = room.getUnreadNotificationCount('highlight') > 0 || me.membership === 'invite'; + tiles.push( ); From 433cd505ee02977cf3ed2695f7d66f9f5c50212f Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 28 Aug 2017 00:39:59 +0100 Subject: [PATCH 02/11] skip direct chats which either you or the target have left --- src/components/views/rooms/MemberInfo.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/components/views/rooms/MemberInfo.js b/src/components/views/rooms/MemberInfo.js index 4f7394fd91..6d38797a2d 100644 --- a/src/components/views/rooms/MemberInfo.js +++ b/src/components/views/rooms/MemberInfo.js @@ -620,7 +620,12 @@ module.exports = withMatrixClient(React.createClass({ const room = this.props.matrixClient.getRoom(roomId); if (room) { const me = room.getMember(this.props.matrixClient.credentials.userId); - if (me.membership === 'leave') continue; + // not a DM room if we have left it + if (!me.membership || me.membership === 'leave') continue; + // not a DM room if they have left it + const them = this.props.member; + if (!them.membership || them.membership === 'leave') continue; + const highlight = room.getUnreadNotificationCount('highlight') > 0 || me.membership === 'invite'; tiles.push( From 21af3fe189246b07f68a10d0174ae6d2723398b8 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 28 Aug 2017 00:46:28 +0100 Subject: [PATCH 03/11] modularize and invert logic, so banned etc will count as left --- src/components/views/rooms/MemberInfo.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/views/rooms/MemberInfo.js b/src/components/views/rooms/MemberInfo.js index 6d38797a2d..af32d60cef 100644 --- a/src/components/views/rooms/MemberInfo.js +++ b/src/components/views/rooms/MemberInfo.js @@ -40,6 +40,8 @@ import withMatrixClient from '../../../wrappers/withMatrixClient'; import AccessibleButton from '../elements/AccessibleButton'; import GeminiScrollbar from 'react-gemini-scrollbar'; +// States which both sides of the dmRoom must have for it to be considered relevant. +const joinStates = ['invite', 'join']; module.exports = withMatrixClient(React.createClass({ displayName: 'MemberInfo', @@ -620,11 +622,11 @@ module.exports = withMatrixClient(React.createClass({ const room = this.props.matrixClient.getRoom(roomId); if (room) { const me = room.getMember(this.props.matrixClient.credentials.userId); - // not a DM room if we have left it - if (!me.membership || me.membership === 'leave') continue; - // not a DM room if they have left it + // not a DM room if we have are not joined/invited + if (!me.membership || !joinStates.includes(me.membership)) continue; + // not a DM room if they are not joined/invited const them = this.props.member; - if (!them.membership || them.membership === 'leave') continue; + if (!them.membership || !joinStates.includes(them.membership)) continue; const highlight = room.getUnreadNotificationCount('highlight') > 0 || me.membership === 'invite'; From 9658efd6d7f160552a87d4f29622c42c8c283744 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 28 Aug 2017 01:04:18 +0100 Subject: [PATCH 04/11] add comment and remove redundant logic --- src/components/views/rooms/MemberInfo.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/components/views/rooms/MemberInfo.js b/src/components/views/rooms/MemberInfo.js index af32d60cef..8ed05023ad 100644 --- a/src/components/views/rooms/MemberInfo.js +++ b/src/components/views/rooms/MemberInfo.js @@ -40,9 +40,6 @@ import withMatrixClient from '../../../wrappers/withMatrixClient'; import AccessibleButton from '../elements/AccessibleButton'; import GeminiScrollbar from 'react-gemini-scrollbar'; -// States which both sides of the dmRoom must have for it to be considered relevant. -const joinStates = ['invite', 'join']; - module.exports = withMatrixClient(React.createClass({ displayName: 'MemberInfo', @@ -613,6 +610,10 @@ module.exports = withMatrixClient(React.createClass({ var startChat, kickButton, banButton, muteButton, giveModButton, spinner; if (this.props.member.userId !== this.props.matrixClient.credentials.userId) { const dmRoomMap = new DMRoomMap(this.props.matrixClient); + // dmRooms will not include dmRooms that we have been invited into but did not join. + // Because DMRoomMap runs off account_data[m.direct] which is only set on join of dm room. + // XXX: we potentially want DMs we have been invited to, to also show up here :L + // especially as logic below concerns specially if we haven't joined but have been invited const dmRooms = dmRoomMap.getDMRoomsForUserId(this.props.member.userId); const RoomTile = sdk.getComponent("rooms.RoomTile"); @@ -622,11 +623,11 @@ module.exports = withMatrixClient(React.createClass({ const room = this.props.matrixClient.getRoom(roomId); if (room) { const me = room.getMember(this.props.matrixClient.credentials.userId); - // not a DM room if we have are not joined/invited - if (!me.membership || !joinStates.includes(me.membership)) continue; - // not a DM room if they are not joined/invited + // not a DM room if we have are not joined + if (!me.membership || me.membership !== 'join') continue; + // not a DM room if they are not joined const them = this.props.member; - if (!them.membership || !joinStates.includes(them.membership)) continue; + if (!them.membership || them.membership !== 'join') continue; const highlight = room.getUnreadNotificationCount('highlight') > 0 || me.membership === 'invite'; From 03f88df66ed72852a61586213c26550b1685af56 Mon Sep 17 00:00:00 2001 From: nostradamos Date: Tue, 2 Jan 2018 22:44:18 +0100 Subject: [PATCH 05/11] Make the scrolling compatible with our riot-web fix for https://github.com/vector-im/riot-web/issues/4821 --- src/components/views/rooms/MessageComposerInput.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index aa019de091..01432a06eb 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -525,7 +525,8 @@ export default class MessageComposerInput extends React.Component { // composer. For some reason the editor won't scroll automatically if we paste // blocks of text in or insert newlines. if (textContent.slice(selection.start).indexOf("\n") === -1) { - this.refs.editor.refs.editor.scrollTop = this.refs.editor.refs.editor.scrollHeight; + this.refs.editor.refs.editor.parentNode.parentNode.scrollTop = this. + refs.editor.refs.editor.parentNode.parentNode.scrollHeight; } }); } From e543f5557235e748bbc2414efcec6a875322d645 Mon Sep 17 00:00:00 2001 From: nostradamos Date: Wed, 3 Jan 2018 01:50:03 +0100 Subject: [PATCH 06/11] refactored code --- src/components/views/rooms/MessageComposerInput.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 23e8d807c7..300d25b589 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -512,8 +512,9 @@ export default class MessageComposerInput extends React.Component { // composer. For some reason the editor won't scroll automatically if we paste // blocks of text in or insert newlines. if (textContent.slice(selection.start).indexOf("\n") === -1) { - this.refs.editor.refs.editor.parentNode.parentNode.scrollTop = this. - refs.editor.refs.editor.parentNode.parentNode.scrollHeight; + let editorRoot = this.refs.editor.refs.editor.parentNode.parentNode; + console.log(editorRoot, editorRoot.scrollHeight); + editorRoot.scrollTop = editorRoot.scrollHeight; } }); } From 2189fe92564028997238139d9719980e62deb169 Mon Sep 17 00:00:00 2001 From: nostradamos Date: Wed, 3 Jan 2018 01:52:02 +0100 Subject: [PATCH 07/11] removed console.log --- src/components/views/rooms/MessageComposerInput.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 300d25b589..005a63607d 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -513,7 +513,6 @@ export default class MessageComposerInput extends React.Component { // blocks of text in or insert newlines. if (textContent.slice(selection.start).indexOf("\n") === -1) { let editorRoot = this.refs.editor.refs.editor.parentNode.parentNode; - console.log(editorRoot, editorRoot.scrollHeight); editorRoot.scrollTop = editorRoot.scrollHeight; } }); From 613e3b7ac1bdee64461b35e03fcf93d9c8ec2cda Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 3 Jan 2018 11:57:49 +0000 Subject: [PATCH 08/11] Remove extra full stop --- src/components/structures/UserSettings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js index 09844c3d63..087b96c509 100644 --- a/src/components/structures/UserSettings.js +++ b/src/components/structures/UserSettings.js @@ -375,7 +375,7 @@ module.exports = React.createClass({ { _t("For security, logging out will delete any end-to-end " + "encryption keys from this browser. If you want to be able " + "to decrypt your conversation history from future Riot sessions, " + - "please export your room keys for safe-keeping.") }. + "please export your room keys for safe-keeping.") } , button: _t("Sign out"), extraButtons: [ From d5e2a73d99df1ac74d319294edea335b684ae967 Mon Sep 17 00:00:00 2001 From: lukebarnard Date: Thu, 4 Jan 2018 12:06:13 +0000 Subject: [PATCH 09/11] Add alt condition back in, rename to specify igorance of shift because this is really what this function is for - we want to ignore specifically shift but not necessarily alt (despite this probably not having any real impact). --- src/Keyboard.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Keyboard.js b/src/Keyboard.js index 8e6983fae5..bf83a1a05f 100644 --- a/src/Keyboard.js +++ b/src/Keyboard.js @@ -69,11 +69,11 @@ export function isOnlyCtrlOrCmdKeyEvent(ev) { } } -export function isCtrlOrCmdKeyEvent(ev) { +export function isOnlyCtrlOrCmdIgnoreShiftKeyEvent(ev) { const isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0; if (isMac) { - return ev.metaKey && !ev.ctrlKey; + return ev.metaKey && !ev.altKey && !ev.ctrlKey; } else { - return ev.ctrlKey && !ev.metaKey; + return ev.ctrlKey && !ev.altKey && !ev.metaKey; } } From 2282f5c26f7fdae2d2b6d9c8c860fd41424f6a04 Mon Sep 17 00:00:00 2001 From: lukebarnard Date: Thu, 4 Jan 2018 14:19:10 +0000 Subject: [PATCH 10/11] Remove unused selectedRoom prop --- src/components/structures/LoggedInView.js | 1 - src/components/views/rooms/RoomList.js | 7 ------- 2 files changed, 8 deletions(-) diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js index 38b7634edb..6f40aa559a 100644 --- a/src/components/structures/LoggedInView.js +++ b/src/components/structures/LoggedInView.js @@ -333,7 +333,6 @@ const LoggedInView = React.createClass({
{ SettingsStore.isFeatureEnabled("feature_tag_panel") ? :
} diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js index f14ba5529d..40b2851dbd 100644 --- a/src/components/views/rooms/RoomList.js +++ b/src/components/views/rooms/RoomList.js @@ -660,7 +660,6 @@ module.exports = React.createClass({ editable={false} order="recent" isInvite={true} - selectedRoom={self.props.selectedRoom} incomingCall={self.state.incomingCall} collapsed={self.props.collapsed} searchFilter={self.props.searchFilter} @@ -674,7 +673,6 @@ module.exports = React.createClass({ emptyContent={this._getEmptyContent('m.favourite')} editable={true} order="manual" - selectedRoom={self.props.selectedRoom} incomingCall={self.state.incomingCall} collapsed={self.props.collapsed} searchFilter={self.props.searchFilter} @@ -688,7 +686,6 @@ module.exports = React.createClass({ headerItems={this._getHeaderItems('im.vector.fake.direct')} editable={true} order="recent" - selectedRoom={self.props.selectedRoom} incomingCall={self.state.incomingCall} collapsed={self.props.collapsed} alwaysShowHeader={true} @@ -702,7 +699,6 @@ module.exports = React.createClass({ emptyContent={this._getEmptyContent('im.vector.fake.recent')} headerItems={this._getHeaderItems('im.vector.fake.recent')} order="recent" - selectedRoom={self.props.selectedRoom} incomingCall={self.state.incomingCall} collapsed={self.props.collapsed} searchFilter={self.props.searchFilter} @@ -718,7 +714,6 @@ module.exports = React.createClass({ emptyContent={this._getEmptyContent(tagName)} editable={true} order="manual" - selectedRoom={self.props.selectedRoom} incomingCall={self.state.incomingCall} collapsed={self.props.collapsed} searchFilter={self.props.searchFilter} @@ -733,7 +728,6 @@ module.exports = React.createClass({ emptyContent={this._getEmptyContent('m.lowpriority')} editable={true} order="recent" - selectedRoom={self.props.selectedRoom} incomingCall={self.state.incomingCall} collapsed={self.props.collapsed} searchFilter={self.props.searchFilter} @@ -744,7 +738,6 @@ module.exports = React.createClass({ label={_t('Historical')} editable={false} order="recent" - selectedRoom={self.props.selectedRoom} collapsed={self.props.collapsed} alwaysShowHeader={true} startAsHidden={true} From 55bfff24c4c4e7cd345b57c61713701be6c24d25 Mon Sep 17 00:00:00 2001 From: lukebarnard Date: Thu, 4 Jan 2018 17:46:44 +0000 Subject: [PATCH 11/11] Fix forgotten rename during d5e2a73d99df1ac74d319294edea335b684ae967 --- src/components/views/elements/TagTile.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/views/elements/TagTile.js b/src/components/views/elements/TagTile.js index 2457bb1760..a98cca9609 100644 --- a/src/components/views/elements/TagTile.js +++ b/src/components/views/elements/TagTile.js @@ -20,7 +20,7 @@ import classNames from 'classnames'; import { MatrixClient } from 'matrix-js-sdk'; import sdk from '../../../index'; import dis from '../../../dispatcher'; -import { isCtrlOrCmdKeyEvent } from '../../../Keyboard'; +import { isOnlyCtrlOrCmdIgnoreShiftKeyEvent } from '../../../Keyboard'; import FlairStore from '../../../stores/FlairStore'; @@ -76,7 +76,7 @@ export default React.createClass({ dis.dispatch({ action: 'select_tag', tag: this.props.tag, - ctrlOrCmdKey: isCtrlOrCmdKeyEvent(e), + ctrlOrCmdKey: isOnlyCtrlOrCmdIgnoreShiftKeyEvent(e), shiftKey: e.shiftKey, }); },