link chat unread status to message page being open

This commit is contained in:
marlon-erler
2026-04-02 19:22:10 +00:00
parent 37dcb81365
commit c9ac732da5
8 changed files with 78 additions and 12 deletions
+13 -2
View File
@@ -48,7 +48,6 @@ export default class ChatViewModel {
// view
open = (): void => {
this.chatListViewModel.openChat(this);
this.setReadStatus(false);
};
close = (): void => {
@@ -102,7 +101,10 @@ export default class ChatViewModel {
};
updateReadStatus = (): void => {
if (this.chatListViewModel.selectedChat.value == this) {
if (
this.chatListViewModel.selectedChat.value == this &&
this.selectedPage.value == ChatPageType.Messages
) {
this.chatModel.setReadStatus(false);
}
this.hasUnreadMessages.value = this.chatModel.info.hasUnreadMessages;
@@ -113,6 +115,14 @@ export default class ChatViewModel {
this.hasUnreadMessages.value = hasUnreadMessages;
};
subscribeReadStatus = (): void => {
React.createProxyState([this.selectedPage, this.chatListViewModel.selectedChat], () => {
if (this.chatListViewModel.selectedChat.value != this) return;
if (this.selectedPage.value != ChatPageType.Messages) return;
this.setReadStatus(false);
})
}
// init
constructor(
public coreViewModel: CoreViewModel,
@@ -168,6 +178,7 @@ export default class ChatViewModel {
this.loadPageSelection();
this.resetColor();
this.loadInfo();
this.subscribeReadStatus();
}
}
@@ -1,6 +1,7 @@
import * as React from "bloatless-react";
import ChatModel, { ChatMessage } from "../../Model/Chat/chatModel";
import ChatListViewModel from "../Chat/chatListViewModel";
import { ChatPageType } from "../Chat/chatViewModel";
export default class NotificationViewModel {
chatListViewModel: ChatListViewModel;
@@ -20,7 +21,13 @@ export default class NotificationViewModel {
const currentChat =
this.chatListViewModel.selectedChat.value.chatModel.info
.primaryChannel;
if (notification.chat == currentChat) return;
const currentPage =
this.chatListViewModel.selectedChat.value.selectedPage.value;
if (
notification.chat == currentChat &&
currentPage == ChatPageType.Messages
)
return;
this.messagesInMarquee.push(notification);
this.startLoop();
@@ -67,7 +74,7 @@ export default class NotificationViewModel {
skipLoop = () => {
this.stopLoop();
this.startLoop();
}
};
// init
constructor(chatListViewModel: ChatListViewModel) {