From 4a931bc14522fa097051a2fa55b65fd64ad2c513 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Thu, 28 Jul 2022 10:11:16 +0100 Subject: [PATCH] ios: only show notification on received messages, do not remove non-current group members from contacts that can be added to the group (#846) --- apps/ios/Shared/Model/SimpleXAPI.swift | 2 +- .../Chat/Group/AddGroupMembersView.swift | 4 +- apps/ios/SimpleXChat/ChatTypes.swift | 42 ++++++++++++------- 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/apps/ios/Shared/Model/SimpleXAPI.swift b/apps/ios/Shared/Model/SimpleXAPI.swift index 7274839ca..af544a369 100644 --- a/apps/ios/Shared/Model/SimpleXAPI.swift +++ b/apps/ios/Shared/Model/SimpleXAPI.swift @@ -765,7 +765,7 @@ func processReceivedMsg(_ res: ChatResponse) async { await receiveFile(fileId: file.fileId) } } - if !cItem.isCall() { + if !cItem.chatDir.sent && !cItem.isCall() { NtfManager.shared.notifyMessageReceived(cInfo, cItem) } case let .chatItemStatusUpdated(aChatItem): diff --git a/apps/ios/Shared/Views/Chat/Group/AddGroupMembersView.swift b/apps/ios/Shared/Views/Chat/Group/AddGroupMembersView.swift index ebc62a9ce..69f436e1e 100644 --- a/apps/ios/Shared/Views/Chat/Group/AddGroupMembersView.swift +++ b/apps/ios/Shared/Views/Chat/Group/AddGroupMembersView.swift @@ -67,8 +67,8 @@ struct AddGroupMembersView: View { } func getContactsToAdd() async -> [Contact] { - let memberContactIds = await apiListMembers(chat.chatInfo.apiId) - .compactMap{ $0.memberContactId } + let ms = await apiListMembers(chat.chatInfo.apiId) + let memberContactIds = ms.compactMap{ m in m.memberCurrent ? m.memberContactId : nil } return chatModel.chats .compactMap{ $0.chatInfo.contact } .filter{ !memberContactIds.contains($0.apiId) } diff --git a/apps/ios/SimpleXChat/ChatTypes.swift b/apps/ios/SimpleXChat/ChatTypes.swift index 9cea750a8..73f7325d7 100644 --- a/apps/ios/SimpleXChat/ChatTypes.swift +++ b/apps/ios/SimpleXChat/ChatTypes.swift @@ -511,20 +511,34 @@ public struct GroupMember: Identifiable, Decodable { } public var memberActive: Bool { - get { - switch self.memberStatus { - case .memRemoved: return false - case .memLeft: return false - case .memGroupDeleted: return false - case .memInvited: return false - case .memIntroduced: return false - case .memIntroInvited: return false - case .memAccepted: return false - case .memAnnounced: return false - case .memConnected: return true - case .memComplete: return true - case .memCreator: return true - } + switch memberStatus { + case .memRemoved: return false + case .memLeft: return false + case .memGroupDeleted: return false + case .memInvited: return false + case .memIntroduced: return false + case .memIntroInvited: return false + case .memAccepted: return false + case .memAnnounced: return false + case .memConnected: return true + case .memComplete: return true + case .memCreator: return true + } + } + + public var memberCurrent: Bool { + switch memberStatus { + case .memRemoved: return false + case .memLeft: return false + case .memGroupDeleted: return false + case .memInvited: return false + case .memIntroduced: return true + case .memIntroInvited: return true + case .memAccepted: return true + case .memAnnounced: return true + case .memConnected: return true + case .memComplete: return true + case .memCreator: return true } }