From 6ab76917c91ec8279a2caa9b99143077ab3fe1a6 Mon Sep 17 00:00:00 2001 From: hamza221 Date: Sun, 22 Oct 2023 16:37:44 +0200 Subject: [PATCH] Fix: duplicating contacts with the Recently contacted feature Signed-off-by: hamza221 --- .../Listeners/ContactInteractionListener.php | 39 +++++++------------ 1 file changed, 14 insertions(+), 25 deletions(-) diff --git a/apps/contactsinteraction/lib/Listeners/ContactInteractionListener.php b/apps/contactsinteraction/lib/Listeners/ContactInteractionListener.php index 000954a9016..499a9f28ca5 100644 --- a/apps/contactsinteraction/lib/Listeners/ContactInteractionListener.php +++ b/apps/contactsinteraction/lib/Listeners/ContactInteractionListener.php @@ -76,15 +76,25 @@ class ContactInteractionListener implements IEventListener { $uid = $event->getUid(); $email = $event->getEmail(); $federatedCloudId = $event->getFederatedCloudId(); - $existing = $this->mapper->findMatch( + + $existingContact = $this->cardSearchDao->findExisting( + $event->getActor(), + $uid, + $email, + $federatedCloudId); + if ($existingContact !== null) { + return; + } + + $existingRecentlyContacted = $this->mapper->findMatch( $event->getActor(), $uid, $email, $federatedCloudId ); - if (!empty($existing)) { + if (!empty($existingRecentlyContacted)) { $now = $this->timeFactory->getTime(); - foreach ($existing as $c) { + foreach ($existingRecentlyContacted as $c) { $c->setLastContact($now); $this->mapper->update($c); } @@ -104,29 +114,8 @@ class ContactInteractionListener implements IEventListener { $contact->setFederatedCloudId($federatedCloudId); } $contact->setLastContact($this->timeFactory->getTime()); + $contact->setCard($this->generateCard($contact)); - $copy = $this->cardSearchDao->findExisting( - $event->getActor(), - $uid, - $email, - $federatedCloudId - ); - if ($copy !== null) { - try { - $parsed = Reader::read($copy, Reader::OPTION_FORGIVING); - $parsed->CATEGORIES = $this->l10n->t('Recently contacted'); - $contact->setCard($parsed->serialize()); - } catch (Throwable $e) { - $this->logger->warning( - 'Could not parse card to add recent category: ' . $e->getMessage(), - [ - 'exception' => $e, - ]); - $contact->setCard($copy); - } - } else { - $contact->setCard($this->generateCard($contact)); - } $this->mapper->insert($contact); }, $this->dbConnection); } -- 2.39.5