diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java
index cb043e9a4..402c35181 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java
@@ -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())
diff --git a/src/net/java/sip/communicator/service/protocol/event/ChatRoomMessageDeliveredEvent.java b/src/net/java/sip/communicator/service/protocol/event/ChatRoomMessageDeliveredEvent.java
index 715df3676..fe3d1e8a1 100644
--- a/src/net/java/sip/communicator/service/protocol/event/ChatRoomMessageDeliveredEvent.java
+++ b/src/net/java/sip/communicator/service/protocol/event/ChatRoomMessageDeliveredEvent.java
@@ -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 MessageDeliveredEvent representing delivery of the
* source message to the specified to 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;
+ }
}