Using smack I am creating connection(usera), and after that I am joining to the chatrooms by getting the list of chatrooms. But after this if another user(userb) adds the usera into a new chatroom.But how can I automatically join to the newly created chatroom?
Below is the code to get list of chatrooms and joining chatroom. But in the list I am getting all public chatrooms.How can I get the list of chatrooms in which usera is participant/memeber?
List<DomainBareJid> mucServiceDomains = connection.mucManager.getMucServiceDomains();
//get list of chatrooms
for (DomainBareJid domainBareJid : mucServiceDomains) {
List<HostedRoom> hostedRooms = connection.mucManager.getHostedRooms(domainBareJid);
for (HostedRoom hostedRoom : hostedRooms) {
Log.info("hostedRooms::: jid{} name{}",hostedRoom.getJid(),hostedRoom.getName());
try {
connection.joinRoom(hostedRoom.getJid().toString(), connection.getUserJid().toString());
} catch (Exception e) {
Log.error("Error joinign muc::{}",e);
}
}
}
// joinroom by room name
public boolean joinRoom(String mGroupChatName, String mNickName) {
Log.debug("joinRoom " + mGroupChatName + " " + mNickName);
if(mGroupChatName!=null) {
try {
MultiUserChat mMultiUserChat = groupchats.get(mGroupChatName);
if (mMultiUserChat == null)
{
mMultiUserChat = mucManager.getMultiUserChat(JidCreate.entityBareFrom(mGroupChatName));
mMultiUserChat.addInvitationRejectionListener(this);
groupchats.put(mGroupChatName, mMultiUserChat);
}
DiscussionHistory history = new DiscussionHistory();
history.setMaxStanzas(0);
mMultiUserChat.join(Resourcepart.from(mNickName),null,history,SmackConfiguration.getDefaultPacketReplyTimeout());
mMultiUserChat.addMessageListener(new MessageListener() {
@Override
public void processMessage(Message message) {
Log.info("MUC message recieved is::{}",message.getBody());
}
});
return true;
} catch (Exception e) {
Log.error("joinRoom", e);
}
}
return false;
}
Smack version: 4.2.1