mirror of
https://github.com/element-hq/element-web
synced 2024-11-26 03:05:51 +03:00
Add unread fallback logging (#10509)
This commit is contained in:
parent
737b30d2fa
commit
29780704f1
2 changed files with 212 additions and 176 deletions
|
@ -19,6 +19,7 @@ import { Thread } from "matrix-js-sdk/src/models/thread";
|
|||
import { MatrixEvent } from "matrix-js-sdk/src/models/event";
|
||||
import { EventType } from "matrix-js-sdk/src/@types/event";
|
||||
import { M_BEACON } from "matrix-js-sdk/src/@types/beacon";
|
||||
import { logger } from "matrix-js-sdk/src/logger";
|
||||
|
||||
import { MatrixClientPeg } from "./MatrixClientPeg";
|
||||
import shouldHideEvent from "./shouldHideEvent";
|
||||
|
@ -115,9 +116,14 @@ export function doesRoomOrThreadHaveUnreadMessages(roomOrThread: Room | Thread):
|
|||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// If we got here, we didn't find a message that counted but didn't find
|
||||
// the user's read receipt either, so we guess and say that the room is
|
||||
// unread on the theory that false positives are better than false
|
||||
// negatives here.
|
||||
logger.warn("Falling back to unread room because of no read receipt or counting message found", {
|
||||
roomOrThreadId: roomOrThread.roomId,
|
||||
readUpToId,
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
|||
import { mocked } from "jest-mock";
|
||||
import { MatrixEvent, EventType, MsgType, Room } from "matrix-js-sdk/src/matrix";
|
||||
import { ReceiptType } from "matrix-js-sdk/src/@types/read_receipts";
|
||||
import { logger } from "matrix-js-sdk/src/logger";
|
||||
|
||||
import { haveRendererForEvent } from "../src/events/EventTileFactory";
|
||||
import { makeBeaconEvent, mkEvent, stubClient } from "./test-utils";
|
||||
|
@ -128,8 +129,12 @@ describe("Unread", () => {
|
|||
});
|
||||
|
||||
beforeEach(() => {
|
||||
// Create a room and initial event in it.
|
||||
room = new Room(roomId, client, myId);
|
||||
jest.spyOn(logger, "warn");
|
||||
});
|
||||
|
||||
describe("when there is an initial event in the room", () => {
|
||||
beforeEach(() => {
|
||||
event = mkEvent({
|
||||
event: true,
|
||||
type: "m.room.message",
|
||||
|
@ -317,4 +322,29 @@ describe("Unread", () => {
|
|||
expect(doesRoomHaveUnreadMessages(room)).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
it("returns true for a room that only contains a hidden event", () => {
|
||||
const redactedEvent = mkEvent({
|
||||
event: true,
|
||||
type: "m.room.message",
|
||||
user: aliceId,
|
||||
room: roomId,
|
||||
content: {},
|
||||
});
|
||||
console.log("Event Id", redactedEvent.getId());
|
||||
redactedEvent.makeRedacted(redactedEvent);
|
||||
console.log("Event Id", redactedEvent.getId());
|
||||
// Only for timeline events.
|
||||
room.addLiveEvents([redactedEvent]);
|
||||
|
||||
expect(doesRoomHaveUnreadMessages(room)).toBe(true);
|
||||
expect(logger.warn).toHaveBeenCalledWith(
|
||||
"Falling back to unread room because of no read receipt or counting message found",
|
||||
{
|
||||
roomOrThreadId: room.roomId,
|
||||
readUpToId: null,
|
||||
},
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue