Uses server responses when sending messages to generate delivery reports for those messages.

cusax-fix
Damian Minkov 13 years ago
parent 24983e118d
commit aa31156460

@ -822,16 +822,6 @@ public void sendMessage(Message message)
// We send only the content because it doesn't work if we send the
// Message object.
multiUserChat.sendMessage(message.getContent());
ChatRoomMessageDeliveredEvent msgDeliveredEvt
= new ChatRoomMessageDeliveredEvent(
this,
new Date(),
message,
ChatRoomMessageDeliveredEvent
.CONVERSATION_MESSAGE_DELIVERED);
fireMessageEvent(msgDeliveredEvt);
}
catch (XMPPException ex)
{
@ -1749,10 +1739,6 @@ public void processPacket(Packet packet)
String fromUserName = StringUtils.parseResource(msgFrom);
// skip our own messages
if(getUserNickname().equals(fromUserName))
return;
// when the message comes from the room itself its a system message
if(msgFrom.equals(getName()))
{
@ -1786,6 +1772,27 @@ public void processPacket(Packet packet)
Message newMessage = createMessage(msgBody);
// if we are sending this message, this either a delivery report
// or if there is a delay extension this is a history coming from
// the chat room
if(getUserNickname().equals(fromUserName))
{
// message delivered
ChatRoomMessageDeliveredEvent msgDeliveredEvt
= new ChatRoomMessageDeliveredEvent(
ChatRoomJabberImpl.this,
timeStamp,
newMessage,
ChatRoomMessageDeliveredEvent
.CONVERSATION_MESSAGE_DELIVERED);
if(delay != null)
msgDeliveredEvt.setHistoryMessage(true);
fireMessageEvent(msgDeliveredEvt);
return;
}
if(msg.getType() == org.jivesoftware.smack.packet.Message.Type.error)
{
if (logger.isInfoEnabled())

@ -56,6 +56,11 @@ public class ChatRoomMessageDeliveredEvent
*/
private int eventType = -1;
/**
* Some services can fill our room with message history.
*/
private boolean historyMessage = false;
/**
* Creates a <tt>MessageDeliveredEvent</tt> representing delivery of the
* <tt>source</tt> message to the specified <tt>to</tt> contact.
@ -117,4 +122,23 @@ public int getEventType()
{
return eventType;
}
/**
* Is current event for history message.
* @return is current event for history message.
*/
public boolean isHistoryMessage()
{
return historyMessage;
}
/**
* Changes property, whether this event is for a history message.
*
* @param historyMessage whether its event for history message.
*/
public void setHistoryMessage(boolean historyMessage)
{
this.historyMessage = historyMessage;
}
}

Loading…
Cancel
Save