From ac792237644f5dd83183cf140093c4e61668a02b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Fri, 29 Jul 2022 11:13:45 -0400
Subject: [PATCH] ConversationRepository: consume vcard info

Change-Id: I7c2e6b95fad95049565f9298e2690c3ef8b0b5d1
---
 src/jamidht/conversation_module.cpp    |  5 ++---
 src/jamidht/conversationrepository.cpp | 10 +++++-----
 src/jamidht/conversationrepository.h   |  2 +-
 3 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/src/jamidht/conversation_module.cpp b/src/jamidht/conversation_module.cpp
index 1c732e2609..bf347d10c5 100644
--- a/src/jamidht/conversation_module.cpp
+++ b/src/jamidht/conversation_module.cpp
@@ -1019,9 +1019,8 @@ ConversationModule::onTrustRequest(const std::string& uri,
     req.from = uri;
     req.conversationId = conversationId;
     req.received = std::time(nullptr);
-    auto details = vCard::utils::toMap(
-        std::string_view(reinterpret_cast<const char*>(payload.data()), payload.size()));
-    req.metadatas = ConversationRepository::infosFromVCard(details);
+    req.metadatas = ConversationRepository::infosFromVCard(vCard::utils::toMap(
+        std::string_view(reinterpret_cast<const char*>(payload.data()), payload.size())));
     auto reqMap = req.toMap();
     pimpl_->addConversationRequest(conversationId, std::move(req));
     emitSignal<DRing::ConversationSignal::ConversationRequestReceived>(pimpl_->accountId_,
diff --git a/src/jamidht/conversationrepository.cpp b/src/jamidht/conversationrepository.cpp
index d73162d2e8..ae91f11f32 100644
--- a/src/jamidht/conversationrepository.cpp
+++ b/src/jamidht/conversationrepository.cpp
@@ -3536,16 +3536,16 @@ ConversationRepository::infos() const
 }
 
 std::map<std::string, std::string>
-ConversationRepository::infosFromVCard(const std::map<std::string, std::string>& details)
+ConversationRepository::infosFromVCard(std::map<std::string, std::string>&& details)
 {
     std::map<std::string, std::string> result;
-    for (const auto& [k, v] : details) {
+    for (auto&& [k, v] : details) {
         if (k == vCard::Property::FORMATTED_NAME) {
-            result["title"] = v;
+            result["title"] = std::move(v);
         } else if (k == vCard::Property::DESCRIPTION) {
-            result["description"] = v;
+            result["description"] = std::move(v);
         } else if (k.find(vCard::Property::PHOTO) == 0) {
-            result["avatar"] = v;
+            result["avatar"] = std::move(v);
         }
     }
     return result;
diff --git a/src/jamidht/conversationrepository.h b/src/jamidht/conversationrepository.h
index 5c193366d7..ec1420d215 100644
--- a/src/jamidht/conversationrepository.h
+++ b/src/jamidht/conversationrepository.h
@@ -350,7 +350,7 @@ public:
      */
     std::map<std::string, std::string> infos() const;
     static std::map<std::string, std::string> infosFromVCard(
-        const std::map<std::string, std::string>& details);
+        std::map<std::string, std::string>&& details);
 
     /**
      * Retrieve account's URI from deviceId
-- 
GitLab