@Override public void processMessage(QBGroupChat groupChat, QBChatMessage chatMessage) { User user = DatabaseManager.getUserById(context, chatMessage.getSenderId()); String attachUrl = ChatUtils.getAttachUrlIfExists(chatMessage); String dialogId = chatMessage.getProperty(ChatUtils.PROPERTY_DIALOG_ID); long time = Long.parseLong(chatMessage.getProperty(ChatUtils.PROPERTY_DATE_SENT).toString()); String messageId = chatMessage.getProperty(ChatUtils.PROPERTY_MESSAGE_ID).toString(); String messageType = chatMessage.getProperty(ChatUtils.PROPERTY_NOTIFICATION_TYPE); if (ChatUtils.PROPERTY_NOTIFICATION_TYPE_CREATE_CHAT.equals(messageType)) { if (chatMessage.getBody().equals("join") || chatMessage.getBody().equals("stay")) { if (dialogId.equals(ChatUtils.joinDialogId) && user != null) { ChatUtils.setJoinUsers(user); if (chatMessage.getBody().equals("join")) { sendOccupantStatusGroup("stay"); } } return; } else if (chatMessage.getBody().equals("leave")) { if (dialogId.equals(ChatUtils.joinDialogId) && user != null) ChatUtils.removeJoinUsers(user); return; } } if (user == null) { user = new User(); user.setUserId(chatMessage.getSenderId()); user.setFullName(chatMessage.getSenderId() + ConstsCore.EMPTY_STRING); } saveMessageToCache( new MessageCache( messageId, dialogId, chatMessage.getSenderId(), chatMessage.getBody(), attachUrl, time, false, false, false)); if (!chatMessage.getSenderId().equals(chatCreator.getId())) { // TODO IS handle logic when friend is not in the friend list notifyMessageReceived(chatMessage, user, dialogId, false); } }