From d56214f096a27c044a96f9fe87f4f35f48a98470 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 21 Oct 2015 11:14:00 +0200 Subject: version bump to 1.7.0-beta.2 --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 40e331038..b36448ec6 100644 --- a/build.gradle +++ b/build.gradle @@ -49,8 +49,8 @@ android { defaultConfig { minSdkVersion 14 targetSdkVersion 21 - versionCode 99 - versionName "1.7.0-beta" + versionCode 100 + versionName "1.7.0-beta.2" project.ext.set(archivesBaseName, archivesBaseName + "-" + versionName); } -- cgit v1.2.3 From 3c45f00443e56557183f94d1152a0847342db510 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 21 Oct 2015 17:41:44 +0200 Subject: fixed read conversations showing up as notifications after a restart --- src/main/java/eu/siacs/conversations/entities/Conversation.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/entities/Conversation.java b/src/main/java/eu/siacs/conversations/entities/Conversation.java index f2c4fed42..5f3f1a6e3 100644 --- a/src/main/java/eu/siacs/conversations/entities/Conversation.java +++ b/src/main/java/eu/siacs/conversations/entities/Conversation.java @@ -313,12 +313,11 @@ public class Conversation extends AbstractEntity implements Blockable { public List markRead() { final List unread = new ArrayList<>(); synchronized (this.messages) { - for (int i = this.messages.size() - 1; i >= 0; --i) { - if (this.messages.get(i).isRead()) { - break; + for(Message message : this.messages) { + if (!message.isRead()) { + message.markRead(); + unread.add(message); } - this.messages.get(i).markRead(); - unread.add(this.messages.get(i)); } } return unread; -- cgit v1.2.3 From 1bd68a42b20949f7880cc8aa51d472e363830c7f Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Thu, 22 Oct 2015 11:20:36 +0200 Subject: join muc even if initial conference configuration fetch failed --- .../services/XmppConnectionService.java | 31 ++++++++++++++++++++-- .../stanzas/AbstractAcknowledgeableStanza.java | 14 ++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index ba74280db..cc8f4784c 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -1683,8 +1683,8 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa if (account.getStatus() == Account.State.ONLINE || now) { conversation.resetMucOptions(); fetchConferenceConfiguration(conversation, new OnConferenceConfigurationFetched() { - @Override - public void onConferenceConfigurationFetched(Conversation conversation) { + + private void join(Conversation conversation) { Account account = conversation.getAccount(); final String nick = conversation.getMucOptions().getProposedNick(); final Jid joinJid = conversation.getMucOptions().createJoinJid(nick); @@ -1723,6 +1723,27 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa getMessageArchiveService().catchupMUC(conversation); } } + + @Override + public void onConferenceConfigurationFetched(Conversation conversation) { + join(conversation); + } + + @Override + public void onFetchFailed(final Conversation conversation, Element error) { + conversation.getMucOptions().setOnJoinListener(new MucOptions.OnJoinListener() { + @Override + public void onSuccess() { + fetchConferenceConfiguration(conversation); + } + + @Override + public void onFailure() { + + } + }); + join(conversation); + } }); } else { @@ -1913,6 +1934,10 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa callback.onConferenceConfigurationFetched(conversation); } updateConversationUi(); + } else if (packet.getType() == IqPacket.TYPE.ERROR) { + if (callback != null) { + callback.onFetchFailed(conversation, packet.getError()); + } } } }); @@ -2901,6 +2926,8 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa public interface OnConferenceConfigurationFetched { void onConferenceConfigurationFetched(Conversation conversation); + + void onFetchFailed(Conversation conversation, Element error); } public interface OnConferenceOptionsPushed { diff --git a/src/main/java/eu/siacs/conversations/xmpp/stanzas/AbstractAcknowledgeableStanza.java b/src/main/java/eu/siacs/conversations/xmpp/stanzas/AbstractAcknowledgeableStanza.java index a5de4a847..fa5e6fbdd 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/stanzas/AbstractAcknowledgeableStanza.java +++ b/src/main/java/eu/siacs/conversations/xmpp/stanzas/AbstractAcknowledgeableStanza.java @@ -1,5 +1,7 @@ package eu.siacs.conversations.xmpp.stanzas; +import eu.siacs.conversations.xml.Element; + abstract public class AbstractAcknowledgeableStanza extends AbstractStanza { protected AbstractAcknowledgeableStanza(String name) { @@ -14,4 +16,16 @@ abstract public class AbstractAcknowledgeableStanza extends AbstractStanza { public void setId(final String id) { setAttribute("id", id); } + + public Element getError() { + Element error = findChild("error"); + if (error != null) { + for(Element element : error.getChildren()) { + if (!element.getName().equals("text")) { + return element; + } + } + } + return null; + } } -- cgit v1.2.3