reset subject and name on empty

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/entities/Bookmark.java              | 7 
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 4 
src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java   | 3 
src/main/java/eu/siacs/conversations/utils/StringUtils.java              | 4 
src/main/java/eu/siacs/conversations/xml/Element.java                    | 5 
5 files changed, 17 insertions(+), 6 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/entities/Bookmark.java 🔗

@@ -9,6 +9,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
 
+import eu.siacs.conversations.utils.StringUtils;
 import eu.siacs.conversations.utils.UIHelper;
 import eu.siacs.conversations.xml.Element;
 import eu.siacs.conversations.xmpp.InvalidJid;
@@ -163,11 +164,11 @@ public class Bookmark extends Element implements ListItem {
 
 	public boolean setBookmarkName(String name) {
 		String before = getBookmarkName();
-		if (name != null && !name.equals(before)) {
+		if (name != null) {
 			this.setAttribute("name", name);
-			return true;
 		} else {
-			return false;
+			this.removeAttribute("name");
 		}
+		return StringUtils.changed(before, name);
 	}
 }

src/main/java/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -2462,7 +2462,7 @@ public class XmppConnectionService extends Service {
 					}
 
 					if (bookmark != null && (sameBefore || bookmark.getBookmarkName() == null)) {
-						if (bookmark.setBookmarkName(mucOptions.getName())) {
+						if (bookmark.setBookmarkName(StringUtils.nullOnEmpty(mucOptions.getName()))) {
 							pushBookmarks(account);
 						}
 					}
@@ -2555,7 +2555,7 @@ public class XmppConnectionService extends Service {
 	}
 
 	public void pushSubjectToConference(final Conversation conference, final String subject) {
-		MessagePacket packet = this.getMessageGenerator().conferenceSubject(conference, subject);
+		MessagePacket packet = this.getMessageGenerator().conferenceSubject(conference, StringUtils.nullOnEmpty(subject));
 		this.sendMessagePacket(conference.getAccount(), packet);
 	}
 

src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java 🔗

@@ -52,6 +52,7 @@ import eu.siacs.conversations.ui.util.MenuDoubleTabUtil;
 import eu.siacs.conversations.ui.util.MyLinkify;
 import eu.siacs.conversations.ui.util.SoftKeyboardUtils;
 import eu.siacs.conversations.utils.EmojiWrapper;
+import eu.siacs.conversations.utils.StringUtils;
 import eu.siacs.conversations.utils.StylingHelper;
 import eu.siacs.conversations.utils.UIHelper;
 import eu.siacs.conversations.utils.XmppUri;
@@ -364,7 +365,7 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
         if (mucOptions.getSelf().getAffiliation().ranks(MucOptions.Affiliation.OWNER) && changed(mucOptions.getName(), name)) {
             Bundle options = new Bundle();
             options.putString("muc#roomconfig_persistentroom", "1");
-            options.putString("muc#roomconfig_roomname", name);
+            options.putString("muc#roomconfig_roomname", StringUtils.nullOnEmpty(name));
             xmppConnectionService.pushConferenceConfiguration(mConversation, options, this);
         }
     }

src/main/java/eu/siacs/conversations/xml/Element.java 🔗

@@ -136,6 +136,11 @@ public class Element {
 		return this;
 	}
 
+	public Element removeAttribute(String name) {
+		this.attributes.remove(name);
+		return this;
+	}
+
 	public Element setAttributes(Hashtable<String, String> attributes) {
 		this.attributes = attributes;
 		return this;