diff --git a/src/api/conversationmodel.h b/src/api/conversationmodel.h index fb3bfe275aa853c2faea20a043b775353ec78b28..b49b2b7b58419cd8d2821ca8dbd8ae68fdeeb6b7 100644 --- a/src/api/conversationmodel.h +++ b/src/api/conversationmodel.h @@ -79,6 +79,12 @@ public: * @return conversations filtered */ const ConversationQueue& getFilteredConversations(const profile::Type& filter = profile::Type::INVALID, bool forceUpdate = false, const bool includeBanned = false) const; + /** + * Get a conversation copy + * @param uid of the conversation + * @return a copy of the conversation + */ + const conversation::Info getConversation(const std::string& uid) const; /** * Get the conversation at row in the filtered conversations * @param row diff --git a/src/conversationmodel.cpp b/src/conversationmodel.cpp index 92f0502953bce37c11195f2244a7b51431d6fb8f..c0cee725cc4cdb6a72388c8ba2a8f244c6ef354d 100644 --- a/src/conversationmodel.cpp +++ b/src/conversationmodel.cpp @@ -346,6 +346,19 @@ ConversationModel::getFilteredConversations(const profile::Type& filter, bool fo return pimpl_->customFilteredConversations; } +const conversation::Info +ConversationModel::getConversation(const std::string& uid) const +{ + auto row = pimpl_->indexOf(uid); + if (row >= pimpl_->conversations.size()) + return conversation::Info(); + + auto conversationInfo = pimpl_->conversations.at(row); + conversationInfo.unreadMessages = pimpl_->getNumberOfUnreadMessagesFor(conversationInfo.uid); + + return conversationInfo; +} + conversation::Info ConversationModel::filteredConversation(const unsigned int row) const {