diff --git a/src/conversation.cpp b/src/conversation.cpp index fbf1be34ee0f22102b0b50a9b9e66480fe43ca83..5e8aa3d1d57ec9e00153ea3a012cb7a3b923f59c 100644 --- a/src/conversation.cpp +++ b/src/conversation.cpp @@ -86,17 +86,21 @@ void Conversation::setRoom(const std::string &room) { m_legacyName = m_room + "/" + m_legacyName; } +void Conversation::cacheMessage(boost::shared_ptr &message) { + boost::posix_time::ptime timestamp = boost::posix_time::second_clock::universal_time(); + boost::shared_ptr delay(boost::make_shared()); + delay->setStamp(timestamp); + message->addPayload(delay); + m_cachedMessages.push_back(message); + if (m_cachedMessages.size() > 100) { + m_cachedMessages.pop_front(); + } +} + void Conversation::handleRawMessage(boost::shared_ptr &message) { if (message->getType() != Swift::Message::Groupchat) { if (m_conversationManager->getComponent()->inServerMode() && m_conversationManager->getUser()->shouldCacheMessages()) { - boost::posix_time::ptime timestamp = boost::posix_time::second_clock::universal_time(); - boost::shared_ptr delay(boost::make_shared()); - delay->setStamp(timestamp); - message->addPayload(delay); - m_cachedMessages.push_back(message); - if (m_cachedMessages.size() > 100) { - m_cachedMessages.pop_front(); - } + cacheMessage(message); } else { m_conversationManager->getComponent()->getStanzaChannel()->sendMessage(message); @@ -104,14 +108,7 @@ void Conversation::handleRawMessage(boost::shared_ptr &message) } else { if (m_jids.empty()) { - boost::posix_time::ptime timestamp = boost::posix_time::second_clock::universal_time(); - boost::shared_ptr delay(boost::make_shared()); - delay->setStamp(timestamp); - message->addPayload(delay); - m_cachedMessages.push_back(message); - if (m_cachedMessages.size() > 100) { - m_cachedMessages.pop_front(); - } + cacheMessage(message); } else { BOOST_FOREACH(const Swift::JID &jid, m_jids) {