Fix Mark all as read
in settings (#12205)
* Fix `Mark all as read` in settings * Update tests
This commit is contained in:
parent
40ee1bb400
commit
8299abd344
6 changed files with 16 additions and 11 deletions
|
@ -74,6 +74,9 @@ export function doesRoomHaveUnreadMessages(room: Room, includeThreads: boolean):
|
|||
}
|
||||
|
||||
function doesTimelineHaveUnreadMessages(room: Room, timeline: Array<MatrixEvent>): boolean {
|
||||
// The room is a space, let's ignore it
|
||||
if (room.isSpaceRoom()) return false;
|
||||
|
||||
const myUserId = room.client.getSafeUserId();
|
||||
const latestImportantEventId = findLatestImportantEvent(room.client, timeline)?.getId();
|
||||
if (latestImportantEventId) {
|
||||
|
|
|
@ -57,6 +57,7 @@ import {
|
|||
import { Caption } from "../typography/Caption";
|
||||
import { SettingsSubsectionHeading } from "./shared/SettingsSubsectionHeading";
|
||||
import SettingsSubsection from "./shared/SettingsSubsection";
|
||||
import { doesRoomHaveUnreadMessages } from "../../../Unread";
|
||||
|
||||
// TODO: this "view" component still has far too much application logic in it,
|
||||
// which should be factored out to other files.
|
||||
|
@ -739,7 +740,7 @@ export default class Notifications extends React.PureComponent<IProps, IState> {
|
|||
category === RuleClass.VectorOther &&
|
||||
MatrixClientPeg.safeGet()
|
||||
.getRooms()
|
||||
.some((r) => r.getUnreadNotificationCount() > 0)
|
||||
.some((r) => doesRoomHaveUnreadMessages(r, true))
|
||||
) {
|
||||
clearNotifsButton = (
|
||||
<AccessibleButton
|
||||
|
|
|
@ -34,7 +34,8 @@ export abstract class ReadyWatchingStore extends EventEmitter implements IDestro
|
|||
public async start(): Promise<void> {
|
||||
this.dispatcherRef = this.dispatcher.register(this.onAction);
|
||||
|
||||
const matrixClient = MatrixClientPeg.get();
|
||||
// MatrixClientPeg can be undefined in tests because of circular dependencies with other stores
|
||||
const matrixClient = MatrixClientPeg?.get();
|
||||
if (matrixClient) {
|
||||
this.matrixClient = matrixClient;
|
||||
await this.onReady();
|
||||
|
|
|
@ -26,6 +26,7 @@ import { IndicatorIcon } from "@vector-im/compound-web";
|
|||
|
||||
import SettingsStore from "../settings/SettingsStore";
|
||||
import { NotificationLevel } from "../stores/notifications/NotificationLevel";
|
||||
import { doesRoomHaveUnreadMessages } from "../Unread";
|
||||
|
||||
export const deviceNotificationSettingsKeys = [
|
||||
"notificationsEnabled",
|
||||
|
@ -105,7 +106,7 @@ export async function clearRoomNotification(room: Room, client: MatrixClient): P
|
|||
*/
|
||||
export function clearAllNotifications(client: MatrixClient): Promise<Array<{} | undefined>> {
|
||||
const receiptPromises = client.getRooms().reduce((promises: Array<Promise<{} | undefined>>, room: Room) => {
|
||||
if (room.getUnreadNotificationCount() > 0) {
|
||||
if (doesRoomHaveUnreadMessages(room, true)) {
|
||||
const promise = clearRoomNotification(room, client);
|
||||
promises.push(promise);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue