diff --git a/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift b/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift index 13af8ca86..25b67299a 100644 --- a/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift +++ b/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift @@ -454,11 +454,11 @@ struct ConversationFragment: View { .environmentObject(conversationViewModel) .environmentObject(conversationsListViewModel) } - /* .onAppear { - conversationViewModel.getMessages() - } - */ + if conversationViewModel.displayedConversationUnreadMessagesCount > 0 { + conversationViewModel.markAsRead() + } + } .onDisappear { conversationViewModel.resetMessage() } diff --git a/Linphone/UI/Main/Conversations/ViewModel/ConversationsListViewModel.swift b/Linphone/UI/Main/Conversations/ViewModel/ConversationsListViewModel.swift index e5950ff68..16a28e9d0 100644 --- a/Linphone/UI/Main/Conversations/ViewModel/ConversationsListViewModel.swift +++ b/Linphone/UI/Main/Conversations/ViewModel/ConversationsListViewModel.swift @@ -219,23 +219,20 @@ class ConversationsListViewModel: ObservableObject { SharedMainViewModel.shared.updateUnreadMessagesCount() } }, onChatRoomRead: { (_: Core, chatRoom: ChatRoom) in - if let defaultAddress = core.defaultAccount?.contactAddress, - let localAddress = chatRoom.localAddress, - defaultAddress.weakEqual(address2: localAddress) { - let idTmp = LinphoneUtils.getChatRoomId(room: chatRoom) - let model = self.conversationsList.first(where: { $0.id == idTmp }) ?? ConversationModel(chatRoom: chatRoom) - model.getContentTextMessage(chatRoom: chatRoom) - let index = self.conversationsList.firstIndex(where: { $0.id == idTmp }) - DispatchQueue.main.async { - if index != nil { - self.conversationsList.remove(at: index!) - self.conversationsList.insert(model, at: index!) - } else { - self.conversationsList.insert(model, at: 0) - } - } - SharedMainViewModel.shared.updateUnreadMessagesCount() - } + print("markAsRead 00 ---- \(chatRoom.subject ?? "No subject")") + print("markAsRead 01 ---- \(core.defaultAccount != nil )") + print("markAsRead 02 ---- \(core.defaultAccount?.contactAddress?.asStringUriOnly() ?? "No default address")") + print("markAsRead 03 ---- \(chatRoom.localAddress?.asStringUriOnly() ?? "No local address")") + let idTmp = LinphoneUtils.getChatRoomId(room: chatRoom) + let model = self.conversationsList.first(where: { $0.id == idTmp }) ?? ConversationModel(chatRoom: chatRoom) + model.getContentTextMessage(chatRoom: chatRoom) + if let index = self.conversationsList.firstIndex(where: { $0.id == idTmp }) { + DispatchQueue.main.async { + self.conversationsList.remove(at: index) + self.conversationsList.insert(model, at: index) + } + } + SharedMainViewModel.shared.updateUnreadMessagesCount() }, onChatRoomStateChanged: { (core: Core, chatroom: ChatRoom, state: ChatRoom.State) in // Log.info("[ConversationsListViewModel] Conversation [${LinphoneUtils.getChatRoomId(chatRoom)}] state changed [$state]") if let defaultAddress = core.defaultAccount?.contactAddress,