diff --git a/src/components/structures/TimelinePanel.js b/src/components/structures/TimelinePanel.js index 8ef0e7631f..7fe515b958 100644 --- a/src/components/structures/TimelinePanel.js +++ b/src/components/structures/TimelinePanel.js @@ -478,7 +478,9 @@ var TimelinePanel = React.createClass({ if (this.isAtEndOfLiveTimeline()) { this.props.timelineSet.room.setUnreadNotificationCount('total', 0); this.props.timelineSet.room.setUnreadNotificationCount('highlight', 0); - // XXX: i'm a bit surprised we don't have to emit an event or dispatch to get this picked up + dis.dispatch({ + action: 'on_room_read', + }); } var currentReadUpToEventId = this._getCurrentReadReceipt(true); diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js index 51811f672a..59346d5f4d 100644 --- a/src/components/views/rooms/RoomList.js +++ b/src/components/views/rooms/RoomList.js @@ -96,6 +96,12 @@ module.exports = React.createClass({ }); } break; + case 'on_room_read': + // Force an update because the notif count state is too deep to cause + // an update. This forces the local echo of reading notifs to be + // reflected by the RoomTiles. + this.forceUpdate(); + break; } },