diff --git a/src/jamidht/conversation.cpp b/src/jamidht/conversation.cpp index 8e7ad27e3d32cd5a67ad6265c398347980474564..89676a6f6137bc4ac65f38ae71dca5f6e0f117ae 100644 --- a/src/jamidht/conversation.cpp +++ b/src/jamidht/conversation.cpp @@ -177,7 +177,7 @@ public: conversationDataPath_ = fileutils::get_data_dir() / account->getAccountID() / "conversation_data" / conversationId; activeCallsPath_ = conversationDataPath_ / ConversationMapKeys::ACTIVE_CALLS; - for (const auto& c: repository_->convCommitToMap(commits)) + for (const auto& c: repository_->convCommitsToMap(commits)) updateActiveCalls(c); init(); } @@ -276,7 +276,7 @@ public: convcommits.emplace_back(*commit); } } - announce(repository_->convCommitToMap(convcommits)); + announce(repository_->convCommitsToMap(convcommits)); } /** @@ -838,7 +838,7 @@ Conversation::Impl::loadMessages(const LogOptions& options) [](auto, auto, auto) { return false; }, options.from, options.logIfNotFound); - return repository_->convCommitToMap(commits); + return repository_->convCommitsToMap(commits); } std::vector<libjami::SwarmMessage> @@ -895,15 +895,18 @@ Conversation::Impl::loadMessages2(const LogOptions& options, History* optHistory return CallbackResult::Ok; // Continue }, [&](auto&& cc) { - std::map<std::string, std::string> map = *repository_->convCommitToMap(cc); - if (map.find("reply-to") != map.end()) { - replies.emplace_back(map.at("reply-to")); + auto optMessage = repository_->convCommitToMap(cc); + if (!optMessage.has_value()) + return; + auto message = optMessage.value(); + if (message.find("reply-to") != message.end()) { + replies.emplace_back(message.at("reply-to")); } - auto it = std::find(replies.begin(), replies.end(), map.at("id")); + auto it = std::find(replies.begin(), replies.end(), message.at("id")); if (it != replies.end()) { replies.erase(it); } - auto added = addToHistory({map}, false, optHistory); + auto added = addToHistory({message}, false, optHistory); ret.insert(ret.end(), added.begin(), added.end()); }, [](auto, auto, auto) { return false; }, @@ -1609,7 +1612,7 @@ Conversation::Impl::mergeHistory(const std::string& uri) } JAMI_DEBUG("Successfully merge history with {:s}", uri); - auto result = repository_->convCommitToMap(newCommits); + auto result = repository_->convCommitsToMap(newCommits); for (const auto& commit : result) { auto it = commit.find("type"); if (it != commit.end() && it->second == "member") { @@ -2400,9 +2403,8 @@ Conversation::search(uint32_t req, return CallbackResult::Ok; // Continue }, [&](auto&& cc) { - sthis->pimpl_->addToHistory({*sthis->pimpl_->repository_->convCommitToMap(cc)}, - false, - &history); + if (auto optMessage = sthis->pimpl_->repository_->convCommitToMap(cc)) + sthis->pimpl_->addToHistory({optMessage.value()}, false, &history); }, [&](auto id, auto, auto) { if (id == filter.lastId) diff --git a/src/jamidht/conversationrepository.cpp b/src/jamidht/conversationrepository.cpp index 1cfde5053a346cb3875c35a5a3aa3a73f871ec94..3575cca3755e4c28ebb1fe88da7a84d92783f168 100644 --- a/src/jamidht/conversationrepository.cpp +++ b/src/jamidht/conversationrepository.cpp @@ -3876,7 +3876,7 @@ ConversationRepository::convCommitToMap(const ConversationCommit& commit) const } std::vector<std::map<std::string, std::string>> -ConversationRepository::convCommitToMap(const std::vector<ConversationCommit>& commits) const +ConversationRepository::convCommitsToMap(const std::vector<ConversationCommit>& commits) const { std::vector<std::map<std::string, std::string>> result = {}; result.reserve(commits.size()); diff --git a/src/jamidht/conversationrepository.h b/src/jamidht/conversationrepository.h index 2202227dcf2a6df2f7e3fe2eca97df8d39ca9d85..3e7c517e327fba43d4d481e5b23c78b0667b29fd 100644 --- a/src/jamidht/conversationrepository.h +++ b/src/jamidht/conversationrepository.h @@ -407,7 +407,7 @@ public: /** * Convert ConversationCommit to MapStringString for the client */ - std::vector<std::map<std::string, std::string>> convCommitToMap( + std::vector<std::map<std::string, std::string>> convCommitsToMap( const std::vector<ConversationCommit>& commits) const; std::optional<std::map<std::string, std::string>> convCommitToMap( const ConversationCommit& commit) const;