diff --git a/src/main/java/eu/siacs/conversations/entities/Bookmark.java b/src/main/java/eu/siacs/conversations/entities/Bookmark.java index 1157d823aa2918379e20f4b608c8c808652a403e..748cab7161a7edab6e72f4b14b8ef9361d7cd04d 100644 --- a/src/main/java/eu/siacs/conversations/entities/Bookmark.java +++ b/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); } } diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index 9584c2964429e5593ebe7092d797462921d52a15..b30d31fb42b68449a1cb80c15ab320ccc673a265 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/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); } diff --git a/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java b/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java index 8ff0b1bc54cdebdfd7e33a06aa4968d456141147..aa66e91845a7bb6935a2fdbfab13899f6738d410 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java +++ b/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); } } diff --git a/src/main/java/eu/siacs/conversations/utils/StringUtils.java b/src/main/java/eu/siacs/conversations/utils/StringUtils.java index 542468d18bb6d8710016cc09f141dce894b1f7a2..1135560bbec6d63a65bb497a605df871c4f29905 100644 --- a/src/main/java/eu/siacs/conversations/utils/StringUtils.java +++ b/src/main/java/eu/siacs/conversations/utils/StringUtils.java @@ -43,4 +43,8 @@ public class StringUtils { return !equals(one, two); } + public static String nullOnEmpty(String input) { + return input == null || input.trim().isEmpty() ? null : input; + } + } diff --git a/src/main/java/eu/siacs/conversations/xml/Element.java b/src/main/java/eu/siacs/conversations/xml/Element.java index b31cef68ef1feadf084092259dc9e9bd7b5f467f..0bbdbcebb32e673acde479b5a8f59530b0ac4e78 100644 --- a/src/main/java/eu/siacs/conversations/xml/Element.java +++ b/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 attributes) { this.attributes = attributes; return this;