You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-12-23 22:42:10 +03:00
Do not calculate highlight notifs for threads unknown to the room (#2957)
This commit is contained in:
@@ -141,6 +141,29 @@ describe("fixNotificationCountOnDecryption", () => {
|
|||||||
expect(room.getThreadUnreadNotificationCount(THREAD_ID, NotificationCountType.Highlight)).toBe(0);
|
expect(room.getThreadUnreadNotificationCount(THREAD_ID, NotificationCountType.Highlight)).toBe(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("does not calculate for threads unknown to the room", () => {
|
||||||
|
room.setThreadUnreadNotificationCount(THREAD_ID, NotificationCountType.Total, 0);
|
||||||
|
room.setThreadUnreadNotificationCount(THREAD_ID, NotificationCountType.Highlight, 0);
|
||||||
|
|
||||||
|
const unknownThreadEvent = mkEvent({
|
||||||
|
type: EventType.RoomMessage,
|
||||||
|
content: {
|
||||||
|
"m.relates_to": {
|
||||||
|
rel_type: RelationType.Thread,
|
||||||
|
event_id: "$unknownthread",
|
||||||
|
},
|
||||||
|
"msgtype": MsgType.Text,
|
||||||
|
"body": "Thread reply",
|
||||||
|
},
|
||||||
|
event: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
fixNotificationCountOnDecryption(mockClient, unknownThreadEvent);
|
||||||
|
|
||||||
|
expect(room.getThreadUnreadNotificationCount(THREAD_ID, NotificationCountType.Total)).toBe(0);
|
||||||
|
expect(room.getThreadUnreadNotificationCount(THREAD_ID, NotificationCountType.Highlight)).toBe(0);
|
||||||
|
});
|
||||||
|
|
||||||
it("emits events", () => {
|
it("emits events", () => {
|
||||||
const cb = jest.fn();
|
const cb = jest.fn();
|
||||||
room.on(RoomEvent.UnreadNotifications, cb);
|
room.on(RoomEvent.UnreadNotifications, cb);
|
||||||
|
|||||||
@@ -9297,9 +9297,21 @@ export function fixNotificationCountOnDecryption(cli: MatrixClient, event: Matri
|
|||||||
if (oldHighlight !== newHighlight || currentCount > 0) {
|
if (oldHighlight !== newHighlight || currentCount > 0) {
|
||||||
// TODO: Handle mentions received while the client is offline
|
// TODO: Handle mentions received while the client is offline
|
||||||
// See also https://github.com/vector-im/element-web/issues/9069
|
// See also https://github.com/vector-im/element-web/issues/9069
|
||||||
const hasReadEvent = isThreadEvent
|
let hasReadEvent;
|
||||||
? room.getThread(event.threadRootId)?.hasUserReadEvent(cli.getUserId()!, event.getId()!)
|
if (isThreadEvent) {
|
||||||
: room.hasUserReadEvent(cli.getUserId()!, event.getId()!);
|
const thread = room.getThread(event.threadRootId);
|
||||||
|
hasReadEvent = thread
|
||||||
|
? thread.hasUserReadEvent(cli.getUserId()!, event.getId()!)
|
||||||
|
// If the thread object does not exist in the room yet, we don't
|
||||||
|
// want to calculate notification for this event yet. We have not
|
||||||
|
// restored the read receipts yet and can't accurately calculate
|
||||||
|
// highlight notifications at this stage.
|
||||||
|
//
|
||||||
|
// This issue can likely go away when MSC3874 is implemented
|
||||||
|
: true;
|
||||||
|
} else {
|
||||||
|
hasReadEvent = room.hasUserReadEvent(cli.getUserId()!, event.getId()!);
|
||||||
|
}
|
||||||
|
|
||||||
if (!hasReadEvent) {
|
if (!hasReadEvent) {
|
||||||
let newCount = currentCount;
|
let newCount = currentCount;
|
||||||
|
|||||||
Reference in New Issue
Block a user