public void joinRoomChat(QBDialog dialog)
     throws XMPPException, SmackException, QBResponseException {
   QBGroupChat roomChat = createChatIfNotExist(dialog);
   if (!roomChat.isJoined()) {
     DiscussionHistory history = new DiscussionHistory();
     history.setMaxStanzas(0);
     roomChat.join(history);
   }
 }
 public void leaveDialogs() throws XMPPException, SmackException.NotConnectedException {
   if (groupDialogsList != null) {
     for (QBDialog dialog : groupDialogsList) {
       QBGroupChat roomChat = groupChatManager.getGroupChat(dialog.getRoomJid());
       if (roomChat != null && roomChat.isJoined()) {
         roomChat.leave();
       }
     }
   }
 }
 private void sendRoomMessage(QBChatMessage chatMessage, String roomJId, String dialogId)
     throws QBResponseException {
   groupChat = groupChatManager.getGroupChat(roomJId);
   QBDialog existingDialog = null;
   if (groupChat == null) {
     existingDialog = ChatUtils.getExistDialogById(context, dialogId);
     groupChat = (QBGroupChat) createChatLocally(existingDialog, null);
   }
   String error = null;
   if (!TextUtils.isEmpty(dialogId)) {
     chatMessage.setProperty(ChatUtils.PROPERTY_DIALOG_ID, dialogId);
   }
   try {
     groupChat.sendMessage(chatMessage);
   } catch (XMPPException e) {
     error = context.getString(R.string.dlg_fail_send_msg);
   } catch (SmackException.NotConnectedException e) {
     error = context.getString(R.string.dlg_fail_connection);
   } catch (IllegalStateException e) {
     ErrorUtils.showError(context, context.getString(R.string.dlg_not_joined_room));
     tryJoinRoomChat(existingDialog);
   }
   if (error != null) {
     throw new QBResponseException(error);
   }
 }
 private QBGroupChat createChatIfNotExist(QBDialog dialog) throws QBResponseException {
   boolean notNull = Utils.validateNotNull(groupChatManager);
   if (!notNull) {
     ErrorUtils.logError(TAG, " groupChatManager is NULL");
     throw new QBResponseException(context.getString(R.string.dlg_fail_create_chat));
   }
   groupChat = groupChatManager.getGroupChat(dialog.getRoomJid());
   if (groupChat == null) {
     groupChat = groupChatManager.createGroupChat(dialog.getRoomJid());
     groupChat.addMessageListener(roomChatMessageListener);
   }
   return groupChat;
 }