set bookmark name to room subject if no subject has been set before

This commit is contained in:
Daniel Gultsch 2015-12-11 19:28:44 +01:00
parent 293e820a58
commit b2c278c91b
4 changed files with 23 additions and 3 deletions

View File

@ -138,6 +138,16 @@ public class Bookmark extends Element implements ListItem {
return this.getAttribute("name");
}
public boolean setBookmarkName(String name) {
String before = getBookmarkName();
if (name != null && !name.equals(before)) {
this.setAttribute("name", name);
return true;
} else {
return false;
}
}
public void unregisterConversation() {
if (this.mJoinedConversation != null) {
this.mJoinedConversation.deregisterWithBookmark();

View File

@ -14,6 +14,7 @@ import eu.siacs.conversations.Config;
import eu.siacs.conversations.crypto.axolotl.AxolotlService;
import eu.siacs.conversations.crypto.axolotl.XmppAxolotlMessage;
import eu.siacs.conversations.entities.Account;
import eu.siacs.conversations.entities.Bookmark;
import eu.siacs.conversations.entities.Contact;
import eu.siacs.conversations.entities.Conversation;
import eu.siacs.conversations.entities.Message;
@ -387,7 +388,7 @@ public class MessageParser extends AbstractParser implements
message.setType(Message.TYPE_PRIVATE);
}
}
updateLastseen(packet,account,true);
updateLastseen(packet, account, true);
boolean checkForDuplicates = query != null
|| (isTypeGroupChat && packet.hasChild("delay","urn:xmpp:delay"))
|| message.getType() == Message.TYPE_PRIVATE;
@ -458,7 +459,14 @@ public class MessageParser extends AbstractParser implements
if (packet.hasChild("subject")) {
if (conversation != null && conversation.getMode() == Conversation.MODE_MULTI) {
conversation.setHasMessagesLeftOnServer(conversation.countMessages() > 0);
conversation.getMucOptions().setSubject(packet.findChildContent("subject"));
String subject = packet.findChildContent("subject");
conversation.getMucOptions().setSubject(subject);
final Bookmark bookmark = conversation.getBookmark();
if (bookmark != null && bookmark.getBookmarkName() == null) {
if (bookmark.setBookmarkName(subject)) {
mXmppConnectionService.pushBookmarks(account);
}
}
mXmppConnectionService.updateConversationUi();
return;
}

View File

@ -250,9 +250,9 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
account.getRoster().clearPresences();
fetchRosterFromServer(account);
fetchBookmarks(account);
mMessageArchiveService.executePendingQueries(account);
sendPresence(account);
connectMultiModeConversations(account);
mMessageArchiveService.executePendingQueries(account);
mJingleConnectionManager.cancelInTransmission();
syncDirtyContacts(account);
}
@ -1015,6 +1015,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
}
public void pushBookmarks(Account account) {
Log.d(Config.LOGTAG, account.getJid().toBareJid()+": pushing bookmarks");
IqPacket iqPacket = new IqPacket(IqPacket.TYPE.SET);
Element query = iqPacket.query("jabber:iq:private");
Element storage = query.addChild("storage", "storage:bookmarks");

View File

@ -420,6 +420,7 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
if (!mConversation.getJid().isBareJid()) {
bookmark.setNick(mConversation.getJid().getResourcepart());
}
bookmark.setBookmarkName(mConversation.getMucOptions().getSubject());
bookmark.setAutojoin(true);
account.getBookmarks().add(bookmark);
xmppConnectionService.pushBookmarks(account);