Skip to content

Commit 9668a24

Browse files
author
Germain
authored
Revert "Check each thread for unread messages. (matrix-org#9723)" (matrix-org#9745)
* Revert "Check each thread for unread messages. (matrix-org#9723)" This reverts commit 9de5654. * ts strict
1 parent f0ed784 commit 9668a24

File tree

2 files changed

+97
-302
lines changed

2 files changed

+97
-302
lines changed

src/Unread.ts

+23-22
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ limitations under the License.
1515
*/
1616

1717
import { Room } from "matrix-js-sdk/src/models/room";
18-
import { Thread } from "matrix-js-sdk/src/models/thread";
1918
import { MatrixEvent } from "matrix-js-sdk/src/models/event";
2019
import { EventType } from "matrix-js-sdk/src/@types/event";
2120
import { M_BEACON } from "matrix-js-sdk/src/@types/beacon";
@@ -60,34 +59,36 @@ export function doesRoomHaveUnreadMessages(room: Room): boolean {
6059
return false;
6160
}
6261

63-
for (const timeline of [room, ...room.getThreads()]) {
64-
// If the current timeline has unread messages, we're done.
65-
if (doesRoomOrThreadHaveUnreadMessages(timeline)) {
66-
return true;
67-
}
68-
}
69-
// If we got here then no timelines were found with unread messages.
70-
return false;
71-
}
72-
73-
function doesRoomOrThreadHaveUnreadMessages(room: Room | Thread): boolean {
7462
const myUserId = MatrixClientPeg.get().getUserId();
7563

76-
// as we don't send RRs for our own messages, make sure we special case that
77-
// if *we* sent the last message into the room, we consider it not unread!
78-
// Should fix: https://github.com/vector-im/element-web/issues/3263
79-
// https://github.com/vector-im/element-web/issues/2427
80-
// ...and possibly some of the others at
81-
// https://github.com/vector-im/element-web/issues/3363
82-
if (room.timeline.at(-1)?.getSender() === myUserId) {
83-
return false;
84-
}
85-
8664
// get the most recent read receipt sent by our account.
8765
// N.B. this is NOT a read marker (RM, aka "read up to marker"),
8866
// despite the name of the method :((
8967
const readUpToId = room.getEventReadUpTo(myUserId!);
9068

69+
if (!SettingsStore.getValue("feature_thread")) {
70+
// as we don't send RRs for our own messages, make sure we special case that
71+
// if *we* sent the last message into the room, we consider it not unread!
72+
// Should fix: https://github.com/vector-im/element-web/issues/3263
73+
// https://github.com/vector-im/element-web/issues/2427
74+
// ...and possibly some of the others at
75+
// https://github.com/vector-im/element-web/issues/3363
76+
if (room.timeline.length && room.timeline[room.timeline.length - 1].getSender() === myUserId) {
77+
return false;
78+
}
79+
}
80+
81+
// if the read receipt relates to an event is that part of a thread
82+
// we consider that there are no unread messages
83+
// This might be a false negative, but probably the best we can do until
84+
// the read receipts have evolved to cater for threads
85+
if (readUpToId) {
86+
const event = room.findEventById(readUpToId);
87+
if (event?.getThread()) {
88+
return false;
89+
}
90+
}
91+
9192
// this just looks at whatever history we have, which if we've only just started
9293
// up probably won't be very much, so if the last couple of events are ones that
9394
// don't count, we don't know if there are any events that do count between where

0 commit comments

Comments
 (0)