fix: fix unread count on Header and roomListView (#5588)

* chore: add hideUnreadStatus to unreadsCount logic

* fix: sets the value of unreadStatus when it does not come from the backend
This commit is contained in:
Gleidson Daniel Silva 2024-02-22 10:40:52 -03:00 committed by GitHub
parent 94807ef05b
commit 645b188df8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 12 additions and 5 deletions

View File

@ -182,6 +182,11 @@ const createOrUpdateSubscription = async (subscription: ISubscription, room: ISe
s.bannerClosed = false;
}
}
if (sub.hideUnreadStatus) {
if (sub.hideUnreadStatus !== subscription.hideUnreadStatus) {
s.hideUnreadStatus = !!subscription.hideUnreadStatus;
}
}
});
batch.push(update);
} catch (e) {

View File

@ -867,11 +867,13 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
.query(Q.where('archived', false), Q.where('open', true), Q.where('rid', Q.notEq(this.rid)))
.observeWithColumns(['unread']);
this.queryUnreads = observable.subscribe(data => {
const { unreadsCount } = this.state;
const newUnreadsCount = data.filter(s => s.unread > 0).reduce((a, b) => a + (b.unread || 0), 0);
if (unreadsCount !== newUnreadsCount) {
this.setState({ unreadsCount: newUnreadsCount }, () => this.setHeader());
this.queryUnreads = observable.subscribe(rooms => {
const unreadsCount = rooms.reduce(
(unreadCount, room) => (room.unread > 0 && !room.hideUnreadStatus ? unreadCount + room.unread : unreadCount),
0
);
if (this.state.unreadsCount !== unreadsCount) {
this.setState({ unreadsCount }, this.setHeader);
}
});
};