public override bool NewMessage(Message iq) { /// See if this is a standard text message /// if (iq is ChatMessage) { ChatMessage chatmsg = iq as ChatMessage; RosterItem item = XMPPClient.FindRosterItem(chatmsg.From); if (item != null) { if (chatmsg.Body != null) { TextMessage txtmsg = new TextMessage(); txtmsg.From = chatmsg.From; txtmsg.To = chatmsg.To; txtmsg.Received = DateTime.Now; if (chatmsg.Delivered.HasValue == true) { txtmsg.Received = chatmsg.Delivered.Value; /// May have been a server stored message } txtmsg.Message = chatmsg.Body; txtmsg = ExtractThread(txtmsg, true); txtmsg.Sent = false; item.AddRecvTextMessage(txtmsg); item.HasNewMessages = true; // Notify XMPPClient that a new conversation item has been added XMPPClient.FireNewConversationItem(item, true, txtmsg, iq.ID); } if (chatmsg.ConversationState != ConversationState.none)// A conversation message { item.Conversation.ConversationState = chatmsg.ConversationState; XMPPClient.FireNewConversationState(item, item.Conversation.ConversationState); } else { XDocument xmldocument = XDocument.Parse(iq.InnerXML.ToString()); if (xmldocument.Root.LastAttribute != null) { string id = xmldocument.Root.LastAttribute.Value.ToString(); XMPPClient.FireDelegateReceiptHandler(chatmsg.From, id); } } } if (item == null) { XDocument xmldocument = XDocument.Parse(iq.InnerXML.ToString()); if (xmldocument.Root.LastAttribute != null) { string id = xmldocument.Root.LastAttribute.Value.ToString(); XMPPClient.FireDelegateReceiptHandler(chatmsg.From, id); } } return(true); } //suresh handle group chat else if (iq.Type == "groupchat") { XDocument xmldoc = XDocument.Parse(iq.InnerXML.ToString()); string body = xmldoc.Descendants("body").Single().Value.ToString(); XMPPClient.FireNewGroupConversation(iq, body); } else if (iq.Type == "normal") { XDocument xmldocument = XDocument.Parse(iq.MessageXML.ToString()); XMPPClient.FireNewGroupConversation(iq, xmldocument.ToString()); } //suresh handle receipt else if (iq.Type == "" || iq.Type == null) { XDocument xmldocument = XDocument.Parse(iq.InnerXML.ToString()); string id = xmldocument.Root.LastAttribute.Value.ToString(); JID messageFromJID = iq.From; XMPPClient.FireDelegateReceiptHandler(messageFromJID, id); } return(false); }