From 16d5429f803dfa6e76110dd83e8f04377358f839 Mon Sep 17 00:00:00 2001 From: iNPUTmice Date: Mon, 6 Oct 2014 13:34:19 +0200 Subject: [PATCH] muc options clean up --- res/values/strings.xml | 6 +-- .../conversations/entities/MucOptions.java | 45 ++++++++----------- .../ui/ConversationFragment.java | 10 ++++- 3 files changed, 31 insertions(+), 30 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 089a678b1d7e52aac814fc5c57713303b1f659e1..58af226b11d9e7782d6d026e73553abdc6c6fbf6 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 a9d568486ef82af8d0b609aa7268d5277d24a97a..12ea4e9311be702670bc644c2ff040a23b2d01d1 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 2fa6b4544c10bcc04bbc5c6dc94651541d07bbed..716e299ef8dc75b9cf90fe739c53ccf04d602178 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;