Merge pull request #3121 from matrix-org/dbkr/count_rooms_with_notifs
Fix favicon/title badge count
This commit is contained in:
commit
97d8fe6db3
2 changed files with 23 additions and 13 deletions
|
@ -35,6 +35,27 @@ function _shouldShowMentionBadge(roomNotifState) {
|
||||||
return roomNotifState !== MUTE;
|
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) {
|
export function aggregateNotificationCount(rooms) {
|
||||||
return rooms.reduce((result, room, index) => {
|
return rooms.reduce((result, room, index) => {
|
||||||
const roomNotifState = getRoomNotifsState(room.roomId);
|
const roomNotifState = getRoomNotifsState(room.roomId);
|
||||||
|
|
|
@ -54,6 +54,7 @@ import ResizeNotifier from "../../utils/ResizeNotifier";
|
||||||
import { ValidatedServerConfig } from "../../utils/AutoDiscoveryUtils";
|
import { ValidatedServerConfig } from "../../utils/AutoDiscoveryUtils";
|
||||||
import AutoDiscoveryUtils from "../../utils/AutoDiscoveryUtils";
|
import AutoDiscoveryUtils from "../../utils/AutoDiscoveryUtils";
|
||||||
import DMRoomMap from '../../utils/DMRoomMap';
|
import DMRoomMap from '../../utils/DMRoomMap';
|
||||||
|
import { countRoomsWithNotif } from '../../RoomNotifs';
|
||||||
|
|
||||||
// Disable warnings for now: we use deprecated bluebird functions
|
// Disable warnings for now: we use deprecated bluebird functions
|
||||||
// and need to migrate, but they spam the console with warnings.
|
// and need to migrate, but they spam the console with warnings.
|
||||||
|
@ -1749,19 +1750,7 @@ export default React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
updateStatusIndicator: function(state, prevState) {
|
updateStatusIndicator: function(state, prevState) {
|
||||||
let notifCount = 0;
|
const notifCount = countRoomsWithNotif(MatrixClientPeg.get().getRooms()).count;
|
||||||
|
|
||||||
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++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (PlatformPeg.get()) {
|
if (PlatformPeg.get()) {
|
||||||
PlatformPeg.get().setErrorStatus(state === 'ERROR');
|
PlatformPeg.get().setErrorStatus(state === 'ERROR');
|
||||||
|
|
Loading…
Reference in a new issue