diff --git a/res/values/strings.xml b/res/values/strings.xml index 089a678b..58af226b 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -262,8 +262,8 @@ Conference name Use room’s subject instead of JID to identify conferences OTR fingerprint copied to clipboard! - You were been banned from the conference room - The conference room is only for members - You were been kicked from the conference room + You are banned from this conference + This conference is members only + You have been kicked from this conference diff --git a/src/eu/siacs/conversations/entities/MucOptions.java b/src/eu/siacs/conversations/entities/MucOptions.java index a9d56848..12ea4e93 100644 --- a/src/eu/siacs/conversations/entities/MucOptions.java +++ b/src/eu/siacs/conversations/entities/MucOptions.java @@ -115,7 +115,6 @@ public class MucOptions { private String subject = null; private String joinnick; private String password = null; - private boolean passwordChanged = false; public MucOptions(Account account) { this.account = account; @@ -165,9 +164,6 @@ public class MucOptions { } aboutToRename = false; } - if (conversation.getBookmark() != null) { - this.passwordChanged = false; - } } else { addUser(user); } @@ -186,22 +182,26 @@ public class MucOptions { } } } else if (type.equals("unavailable") && name.equals(this.joinnick)) { - Element status = packet.findChild("x", - "http://jabber.org/protocol/muc#user").findChild( - "status"); - String code = status.getAttribute("code"); - if (code.equals(STATUS_CODE_KICKED)) { - this.isOnline = false; - this.error = KICKED_FROM_ROOM; - } else if (code.equals(STATUS_CODE_BANNED)) { - this.isOnline = false; - this.error = ERROR_BANNED; + Element x = packet.findChild("x", + "http://jabber.org/protocol/muc#user"); + if (x != null) { + Element status = x.findChild("status"); + if (status != null) { + String code = status.getAttribute("code"); + if (STATUS_CODE_KICKED.equals(code)) { + this.isOnline = false; + this.error = KICKED_FROM_ROOM; + } else if (STATUS_CODE_BANNED.equals(code)) { + this.isOnline = false; + this.error = ERROR_BANNED; + } + } } } else if (type.equals("unavailable")) { deleteUser(packet.getAttribute("from").split("/", 2)[1]); } else if (type.equals("error")) { Element error = packet.findChild("error"); - if (error.hasChild("conflict")) { + if (error != null && error.hasChild("conflict")) { if (aboutToRename) { if (renameListener != null) { renameListener.onRename(false); @@ -211,14 +211,12 @@ public class MucOptions { } else { this.error = ERROR_NICK_IN_USE; } - } else if (error.hasChild("not-authorized")) { - if (conversation.getBookmark() != null) { - this.passwordChanged = true; - } + } else if (error != null && error.hasChild("not-authorized")) { this.error = ERROR_PASSWORD_REQUIRED; - } else if (error.hasChild("forbidden")) { + } else if (error != null && error.hasChild("forbidden")) { this.error = ERROR_BANNED; - } else if (error.hasChild("registration-required")) { + } else if (error != null + && error.hasChild("registration-required")) { this.error = ERROR_MEMBERS_ONLY; } } @@ -363,9 +361,4 @@ public class MucOptions { conversation .setAttribute(Conversation.ATTRIBUTE_MUC_PASSWORD, password); } - - public boolean isPasswordChanged2() { - return this.passwordChanged; - } - } \ No newline at end of file diff --git a/src/eu/siacs/conversations/ui/ConversationFragment.java b/src/eu/siacs/conversations/ui/ConversationFragment.java index 2fa6b454..716e299e 100644 --- a/src/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/eu/siacs/conversations/ui/ConversationFragment.java @@ -131,6 +131,14 @@ public class ConversationFragment extends Fragment { activity.endConversation(conversation); } }; + + private OnClickListener joinMuc = new OnClickListener() { + + @Override + public void onClick(View v) { + activity.xmppConnectionService.joinMuc(conversation); + } + }; private OnClickListener enterPassword = new OnClickListener() { @@ -495,7 +503,7 @@ public class ConversationFragment extends Fragment { break; case MucOptions.KICKED_FROM_ROOM: showSnackbar(R.string.conference_kicked, - R.string.leave, leaveMuc); + R.string.join, joinMuc); break; default: break;