diff --git a/src/networkpluginserver.cpp b/src/networkpluginserver.cpp index 1a0c2705ff75d92e2fd659217890eeca44133aeb..02073f2ca1bf865996d6c28a3d91a75f1b0165f4 100644 --- a/src/networkpluginserver.cpp +++ b/src/networkpluginserver.cpp @@ -255,14 +255,24 @@ void NetworkPluginServer::handleConvMessagePayload(const std::string &data) { if (!user) return; + boost::shared_ptr msg(new Swift::Message()); + msg->setBody(payload.message()); + NetworkConversation *conv = (NetworkConversation *) user->getConversationManager()->getConversation(payload.buddyname()); if (!conv) { conv = new NetworkConversation(user->getConversationManager(), payload.buddyname()); conv->onMessageToSend.connect(boost::bind(&NetworkPluginServer::handleMessageReceived, this, _1, _2)); } - boost::shared_ptr msg(new Swift::Message()); - msg->setBody(payload.message()); - conv->handleMessage(msg); + else { + // groupchat messages can be created only for conversations initiated from XMPP side, not from legacy network side. + // ie. you can't create Groupchat conversation from legacy network side. + if (!payload.nickname().empty()) { + msg->setType(Swift::Message::Groupchat); + } + } + + + conv->handleMessage(msg, payload.nickname()); } void NetworkPluginServer::handleDataRead(boost::shared_ptr c, const Swift::ByteArray &data) { @@ -423,7 +433,7 @@ void NetworkPluginServer::handleUserDestroyed(User *user) { void NetworkPluginServer::handleMessageReceived(NetworkConversation *conv, boost::shared_ptr &msg) { pbnetwork::ConversationMessage m; - m.set_username(conv->getConversationManager()->getUser()->getUserInfo().uin); + m.set_username(conv->getConversationManager()->getUser()->getJID().toBare()); m.set_buddyname(conv->getLegacyName()); m.set_message(msg->getBody());