diff --git a/Ring/Ring/Services/ContactsService.swift b/Ring/Ring/Services/ContactsService.swift index b5b5b8eb9bd0a7530d67817c861c7c52b29cb739..4af5e0b3a1fd6cb5fe67b39ce8c7ae93901b96d5 100644 --- a/Ring/Ring/Services/ContactsService.swift +++ b/Ring/Ring/Services/ContactsService.swift @@ -139,6 +139,12 @@ class ContactsService { return ContactRequestModel(withDictionary: dictionary, accountId: accountId) }) { for contactRequest in contactRequests { + let validContact = self.contacts.value.filter { contact in + contact.hash == contactRequest.ringId && !contact.banned + }.first + if validContact != nil { + return + } if self.contactRequest(withRingId: contactRequest.ringId) == nil { var values = self.contactRequests.value values.append(contactRequest) @@ -154,6 +160,7 @@ class ContactsService { let success = self.contactsAdapter.acceptTrustRequest(fromContact: contactRequest.ringId, withAccountId: account.id) if success { + self.removeContactRequest(withRingId: contactRequest.ringId) var stringImage: String? if let vCard = contactRequest.vCard, let image = vCard.imageData { stringImage = image.base64EncodedString() @@ -305,7 +312,13 @@ extension ContactsService: ContactsAdapterDelegate { if let contactVCard = CNContactVCardSerialization.parseToVCard(data: payload) { vCard = contactVCard } - + // check if contact exists + let validContact = self.contacts.value.filter { contact in + contact.hash == senderAccount && !contact.banned + }.first + if validContact != nil { + return + } //Update trust request list if self.contactRequest(withRingId: senderAccount) == nil { let contactRequest = ContactRequestModel(withRingId: senderAccount,