diff --git a/Linphone/UI/Main/Contacts/Fragments/ContactFragment.swift b/Linphone/UI/Main/Contacts/Fragments/ContactFragment.swift index aa805937e..67fefca97 100644 --- a/Linphone/UI/Main/Contacts/Fragments/ContactFragment.swift +++ b/Linphone/UI/Main/Contacts/Fragments/ContactFragment.swift @@ -35,46 +35,47 @@ struct ContactFragment: View { var body: some View { let indexDisplayed = contactViewModel.indexDisplayedFriend != nil ? contactViewModel.indexDisplayedFriend! : 0 - if #available(iOS 16.0, *), idiom != .pad { - ContactInnerFragment( - contactAvatarModel: ContactsManager.shared.avatarListModel[indexDisplayed], - contactViewModel: contactViewModel, - editContactViewModel: editContactViewModel, - cnContact: CNContact(), - isShowDeletePopup: $isShowDeletePopup, - showingSheet: $showingSheet, - showShareSheet: $showShareSheet, - isShowDismissPopup: $isShowDismissPopup - ) - .sheet(isPresented: $showingSheet) { - ContactListBottomSheet(contactViewModel: contactViewModel, showingSheet: $showingSheet) - .presentationDetents([.fraction(0.2)]) - } - .sheet(isPresented: $showShareSheet) { - ShareSheet(friendToShare: ContactsManager.shared.lastSearch[contactViewModel.indexDisplayedFriend!].friend!) - .presentationDetents([.medium]) - .edgesIgnoringSafeArea(.bottom) - } - } else { - ContactInnerFragment( - contactAvatarModel: ContactsManager.shared.avatarListModel[indexDisplayed], - contactViewModel: contactViewModel, - editContactViewModel: editContactViewModel, - cnContact: CNContact(), - isShowDeletePopup: $isShowDeletePopup, - showingSheet: $showingSheet, - showShareSheet: $showShareSheet, - isShowDismissPopup: $isShowDismissPopup - ) - .halfSheet(showSheet: $showingSheet) { - ContactListBottomSheet(contactViewModel: contactViewModel, showingSheet: $showingSheet) - } onDismiss: {} + if ContactsManager.shared.avatarListModel.count > indexDisplayed { + if #available(iOS 16.0, *), idiom != .pad { + ContactInnerFragment( + contactAvatarModel: ContactsManager.shared.avatarListModel[indexDisplayed], + contactViewModel: contactViewModel, + editContactViewModel: editContactViewModel, + cnContact: CNContact(), + isShowDeletePopup: $isShowDeletePopup, + showingSheet: $showingSheet, + showShareSheet: $showShareSheet, + isShowDismissPopup: $isShowDismissPopup + ) + .sheet(isPresented: $showingSheet) { + ContactListBottomSheet(contactViewModel: contactViewModel, showingSheet: $showingSheet) + .presentationDetents([.fraction(0.2)]) + } .sheet(isPresented: $showShareSheet) { ShareSheet(friendToShare: ContactsManager.shared.lastSearch[contactViewModel.indexDisplayedFriend!].friend!) + .presentationDetents([.medium]) .edgesIgnoringSafeArea(.bottom) } + } else { + ContactInnerFragment( + contactAvatarModel: ContactsManager.shared.avatarListModel[indexDisplayed], + contactViewModel: contactViewModel, + editContactViewModel: editContactViewModel, + cnContact: CNContact(), + isShowDeletePopup: $isShowDeletePopup, + showingSheet: $showingSheet, + showShareSheet: $showShareSheet, + isShowDismissPopup: $isShowDismissPopup + ) + .halfSheet(showSheet: $showingSheet) { + ContactListBottomSheet(contactViewModel: contactViewModel, showingSheet: $showingSheet) + } onDismiss: {} + .sheet(isPresented: $showShareSheet) { + ShareSheet(friendToShare: ContactsManager.shared.lastSearch[contactViewModel.indexDisplayedFriend!].friend!) + .edgesIgnoringSafeArea(.bottom) + } + } } - } } diff --git a/Linphone/UI/Main/Conversations/Model/ConversationModel.swift b/Linphone/UI/Main/Conversations/Model/ConversationModel.swift index 8bc21ef81..60238fa3f 100644 --- a/Linphone/UI/Main/Conversations/Model/ConversationModel.swift +++ b/Linphone/UI/Main/Conversations/Model/ConversationModel.swift @@ -112,11 +112,9 @@ class ConversationModel: ObservableObject { let unreadMessagesCountTmp = self.chatRoom.unreadMessagesCount if unreadMessagesCountTmp > 0 { self.chatRoom.markAsRead() - } - - DispatchQueue.main.async { - if self.unreadMessagesCount != unreadMessagesCountTmp { - self.unreadMessagesCount = unreadMessagesCountTmp + + DispatchQueue.main.async { + self.unreadMessagesCount = 0 } } } diff --git a/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift b/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift index 43acefef0..5d68dfb26 100644 --- a/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift +++ b/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift @@ -89,10 +89,9 @@ class ConversationViewModel: ObservableObject { if unreadMessagesCount > 0 { self.displayedConversation!.chatRoom.markAsRead() - } - DispatchQueue.main.async { - if self.displayedConversationUnreadMessagesCount != unreadMessagesCount { - self.displayedConversationUnreadMessagesCount = unreadMessagesCount + + DispatchQueue.main.async { + self.displayedConversationUnreadMessagesCount = 0 } } }