Fixes a problem where history messages from chatroom keep filling the history.

cusax-fix
Damian Minkov 13 years ago
parent aa31156460
commit 82d00a32fd

@ -869,6 +869,43 @@ public void messageReceived(ChatRoomMessageReceivedEvent evt)
History history = this.getHistoryForMultiChat(
evt.getSourceChatRoom());
// if this is chat room message history on every room enter
// we can receive the same latest history messages and this
// will just fill the history on every join
if(evt.isHistoryMessage())
{
Collection<EventObject> c =
findFirstMessagesAfter(evt.getSourceChatRoom(),
evt.getTimestamp(),
10);
Iterator<EventObject> iter = c.iterator();
boolean isPresent = false;
while(iter.hasNext())
{
EventObject e = iter.next();
if(e instanceof ChatRoomMessageReceivedEvent)
{
ChatRoomMessageReceivedEvent cev =
(ChatRoomMessageReceivedEvent)e;
if( evt.getSourceChatRoomMember().getContactAddress()
.equals(cev.getSourceChatRoomMember()
.getContactAddress())
&& evt.getTimestamp() != null
&& evt.getTimestamp().equals(cev.getTimestamp()))
{
isPresent = true;
break;
}
}
}
if (isPresent)
return;
}
writeMessage(history, "in", evt.getSourceChatRoomMember(),
evt.getMessage(), evt.getTimestamp());
} catch (IOException e)
@ -885,6 +922,39 @@ public void messageDelivered(ChatRoomMessageDeliveredEvent evt)
getHistoryForMultiChat(
evt.getSourceChatRoom());
// if this is chat room message history on every room enter
// we can receive the same latest history messages and this
// will just fill the history on every join
if(evt.isHistoryMessage())
{
Collection<EventObject> c =
findFirstMessagesAfter(evt.getSourceChatRoom(),
evt.getTimestamp(),
10);
Iterator<EventObject> iter = c.iterator();
boolean isPresent = false;
while(iter.hasNext())
{
EventObject e = iter.next();
if(e instanceof ChatRoomMessageDeliveredEvent)
{
ChatRoomMessageDeliveredEvent cev =
(ChatRoomMessageDeliveredEvent)e;
if(evt.getTimestamp() != null
&& evt.getTimestamp().equals(cev.getTimestamp()))
{
isPresent = true;
break;
}
}
}
if (isPresent)
return;
}
writeMessage(history, "out", evt.getMessage(), evt.getTimestamp());
} catch (IOException e)
{

Loading…
Cancel
Save