diff --git a/package.json b/package.json index bc6e3496..3b10970a 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "parallelshell": "^1.2.0", "rimraf": "^2.4.3", "source-map-loader": "^0.1.5", - "uglifycss": "0.0.15" + "uglifycss": "0.0.15", + "webpack": "^1.12.6" } } diff --git a/src/controllers/organisms/RoomList.js b/src/controllers/organisms/RoomList.js index 37d4a4e4..2a01527e 100644 --- a/src/controllers/organisms/RoomList.js +++ b/src/controllers/organisms/RoomList.js @@ -88,24 +88,33 @@ module.exports = { onRoomTimeline: function(ev, room, toStartOfTimeline) { if (toStartOfTimeline) return; - var newState = this.getRoomLists(); + var hl = 0; if ( room.roomId != this.props.selectedRoom && ev.getSender() != MatrixClientPeg.get().credentials.userId) { - var hl = 1; + // don't mark rooms as unread for just member changes + if (ev.getType() != "m.room.member") { + hl = 1; + } var actions = MatrixClientPeg.get().getPushActionsForEvent(ev); if (actions && actions.tweaks && actions.tweaks.highlight) { hl = 2; } + } + + if (hl > 0) { + var newState = this.getRoomLists(); + // obviously this won't deep copy but this shouldn't be necessary var amap = this.state.activityMap; amap[room.roomId] = Math.max(amap[room.roomId] || 0, hl); newState.activityMap = amap; + + this.setState(newState); } - this.setState(newState); }, onRoomName: function(room) {