Fixes delivering errors for chat room messages.

ice4sip
Damian Minkov 12 years ago
parent e7b9defafe
commit 709643c711

@ -85,7 +85,7 @@ public void run()
}.start();
GuiActivator.bundleContext.addServiceListener(this);
}
/**
@ -204,21 +204,21 @@ public void messageReceived(ChatRoomMessageReceivedEvent evt)
ChatWindowManager chatWindowManager
= GuiActivator.getUIService().getChatWindowManager();
boolean createWindow = false;
String autoOpenConfig
String autoOpenConfig
= MUCService.getChatRoomAutoOpenOption(
sourceChatRoom.getParentProvider(),
sourceChatRoom.getParentProvider(),
sourceChatRoom.getIdentifier());
if(autoOpenConfig == null)
autoOpenConfig = MUCService.OPEN_ON_IMPORTANT_MESSAGE;
if(autoOpenConfig.equals(MUCService.OPEN_ON_ACTIVITY)
|| (autoOpenConfig.equals(MUCService.OPEN_ON_MESSAGE)
|| (autoOpenConfig.equals(MUCService.OPEN_ON_MESSAGE)
&& !evt.isHistoryMessage())
|| evt.isImportantMessage())
createWindow = true;
if(sourceChatRoom.isSystem())
{
ChatRoomProviderWrapper serverWrapper
@ -236,7 +236,7 @@ public void messageReceived(ChatRoomMessageReceivedEvent evt)
if(chatPanel == null)
return;
String messageContent = message.getContent();
if (evt.isHistoryMessage())
@ -293,11 +293,11 @@ else if(o instanceof ChatRoomMessageReceivedEvent)
message.getContentType(),
message.getMessageUID(),
null);
if(createWindow)
chatWindowManager.openChat(chatPanel, true);
}
/**
* Implements the <tt>ChatRoomMessageListener.messageDeliveryFailed</tt>
* method.
@ -368,14 +368,16 @@ else if (evt.getErrorCode()
= chatWindowManager.getMultiChat(sourceChatRoom, true);
chatPanel.addMessage(
destMember.getName(),
destMember != null ? destMember.getName()
: sourceChatRoom.getName(),
new Date(),
Chat.OUTGOING_MESSAGE,
sourceMessage.getContent(),
sourceMessage.getContentType());
chatPanel.addErrorMessage(
destMember.getName(),
destMember != null ? destMember.getName()
: sourceChatRoom.getName(),
errorMsg);
chatWindowManager.openChat(chatPanel, false);
@ -430,7 +432,7 @@ else if (evt.getEventType().equals(
LocalUserAdHocChatRoomPresenceChangeEvent.LOCAL_USER_JOIN_FAILED))
{
GuiActivator.getAlertUIService().showAlertPopup(
GuiActivator.getResources().getI18NString("service.gui.ERROR"),
GuiActivator.getResources().getI18NString("service.gui.ERROR"),
GuiActivator.getResources().getI18NString(
"service.gui.FAILED_TO_JOIN_CHAT_ROOM",
new String[]{sourceAdHocChatRoom.getName()})
@ -493,16 +495,16 @@ public void run()
ChatRoomListChangeEvent.CHAT_ROOM_CHANGED);
boolean createWindow = false;
String autoOpenConfig
String autoOpenConfig
= MUCService.getChatRoomAutoOpenOption(
sourceChatRoom.getParentProvider(),
sourceChatRoom.getParentProvider(),
sourceChatRoom.getIdentifier());
if(autoOpenConfig != null
if(autoOpenConfig != null
&& autoOpenConfig.equals(MUCService.OPEN_ON_ACTIVITY))
createWindow = true;
ChatWindowManager chatWindowManager
= GuiActivator.getUIService().getChatWindowManager();
ChatPanel chatPanel
@ -513,7 +515,7 @@ public void run()
{
chatPanel.setChatIcon(
chatPanel.getChatSession().getChatStatusIcon());
// Check if we have already opened a chat window for this chat
// wrapper and load the real chat room corresponding to the
// wrapper.
@ -546,7 +548,7 @@ else if (LocalUserChatRoomPresenceChangeEvent
.LOCAL_USER_JOIN_FAILED.equals(eventType))
{
GuiActivator.getAlertUIService().showAlertPopup(
GuiActivator.getResources().getI18NString("service.gui.ERROR"),
GuiActivator.getResources().getI18NString("service.gui.ERROR"),
GuiActivator.getResources().getI18NString(
"service.gui.FAILED_TO_JOIN_CHAT_ROOM",
new String[]{sourceChatRoom.getName()})
@ -780,7 +782,7 @@ public void joinChatRoom(AdHocChatRoom chatRoom)
*/
public void leaveChatRoom(ChatRoomWrapper chatRoomWrapper)
{
ChatRoomWrapper leavedRoomWrapped
ChatRoomWrapper leavedRoomWrapped
= GuiActivator.getMUCService().leaveChatRoom(chatRoomWrapper);
if(leavedRoomWrapped != null)
GuiActivator.getUIService().closeChatRoomWindow(leavedRoomWrapped);
@ -1313,5 +1315,5 @@ public void localUserRoleChanged(ChatRoomLocalUserRoleChangeEvent evt)
= chatWindowManager.getMultiChat(chatRoomWrapper, true);
chatWindowManager.openChat(chatPanel, true);
}
}

@ -1696,7 +1696,7 @@ private void fireMemberRoleEvent(ChatRoomMember member,
* @param evt the <tt>EventObject</tt> that we'd like delivered to all
* registered message listeners.
*/
private void fireMessageEvent(EventObject evt)
void fireMessageEvent(EventObject evt)
{
Iterable<ChatRoomMessageListener> listeners;
synchronized (messageListeners)
@ -1930,8 +1930,8 @@ public void processPacket(Packet packet)
member = smackParticipantToScMember(msgFrom);
}
// somtimes when connecting to rooms they send history
// when the member is nolonger available we create
// sometimes when connecting to rooms they send history
// when the member is no longer available we create
// a fake one so the messages to be displayed.
if(member == null)
{

@ -925,6 +925,34 @@ public void processPacket(Packet packet)
if(msg.getType()
== org.jivesoftware.smack.packet.Message.Type.error)
{
// error which is multichat and we don't know about the contact
// is a muc message error which is missing muc extension
// and is coming from the room, when we try to send message to
// room which was deleted or offline on the server
if(isPrivateMessaging && sourceContact == null)
{
if(privateContactRoom != null)
{
XMPPError error = packet.getError();
int errorResultCode
= ChatRoomMessageDeliveryFailedEvent.UNKNOWN_ERROR;
String errorReason = error.getMessage();
ChatRoomMessageDeliveryFailedEvent evt =
new ChatRoomMessageDeliveryFailedEvent(
privateContactRoom,
null,
errorResultCode,
errorReason,
new Date(),
newMessage);
((ChatRoomJabberImpl)privateContactRoom)
.fireMessageEvent(evt);
}
return;
}
if (logger.isInfoEnabled())
logger.info("Message error received from " + userBareID);

Loading…
Cancel
Save