Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Commit

Permalink
Fix favicon/title badge count
Browse files Browse the repository at this point in the history
This was using a separate function (in MatrixChat) that didn't
take into account whether we were supposed to be hiding the badge
for rooms so would include notifs that were hidden everywhere else.

Also make it a function & put it in RoomNotifs with all its friends.

Fixes element-hq/element-web#3060
  • Loading branch information
dbkr committed Jun 19, 2019
1 parent 9591e6b commit edd43a2
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 13 deletions.
21 changes: 21 additions & 0 deletions src/RoomNotifs.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,27 @@ function _shouldShowMentionBadge(roomNotifState) {
return roomNotifState !== MUTE;
}

export function countRoomsWithNotif(rooms) {
return rooms.reduce((result, room, index) => {
const roomNotifState = getRoomNotifsState(room.roomId);
const highlight = room.getUnreadNotificationCount('highlight') > 0;
const notificationCount = room.getUnreadNotificationCount();

const notifBadges = notificationCount > 0 && _shouldShowNotifBadge(roomNotifState);
const mentionBadges = highlight && _shouldShowMentionBadge(roomNotifState);
const isInvite = room.hasMembershipState(MatrixClientPeg.get().credentials.userId, 'invite');
const badges = notifBadges || mentionBadges || isInvite;

if (badges) {
result.count++;
if (highlight) {
result.highlight = true;
}
}
return result;
}, {count: 0, highlight: false});
}

export function aggregateNotificationCount(rooms) {
return rooms.reduce((result, room, index) => {
const roomNotifState = getRoomNotifsState(room.roomId);
Expand Down
15 changes: 2 additions & 13 deletions src/components/structures/MatrixChat.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ import ResizeNotifier from "../../utils/ResizeNotifier";
import { ValidatedServerConfig } from "../../utils/AutoDiscoveryUtils";
import AutoDiscoveryUtils from "../../utils/AutoDiscoveryUtils";
import DMRoomMap from '../../utils/DMRoomMap';
import { countRoomsWithNotif } from '../../RoomNotifs';

// Disable warnings for now: we use deprecated bluebird functions
// and need to migrate, but they spam the console with warnings.
Expand Down Expand Up @@ -1749,19 +1750,7 @@ export default React.createClass({
},

updateStatusIndicator: function(state, prevState) {
let notifCount = 0;

const rooms = MatrixClientPeg.get().getRooms();
for (let i = 0; i < rooms.length; ++i) {
if (rooms[i].hasMembershipState(MatrixClientPeg.get().credentials.userId, 'invite')) {
notifCount++;
} else if (rooms[i].getUnreadNotificationCount()) {
// if we were summing unread notifs:
// notifCount += rooms[i].getUnreadNotificationCount();
// instead, we just count the number of rooms with notifs.
notifCount++;
}
}
let notifCount = countRoomsWithNotif(MatrixClientPeg.get().getRooms()).count;

if (PlatformPeg.get()) {
PlatformPeg.get().setErrorStatus(state === 'ERROR');
Expand Down

0 comments on commit edd43a2

Please sign in to comment.