From 78bd6c423fa1a2b89322deb69a23b15ef3a72bcb Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 7 Apr 2014 23:58:59 +0200 Subject: [PATCH] fixed #52. thanks @strb --- res/xml/preferences.xml | 5 +++++ .../services/XmppConnectionService.java | 12 +++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index 7339565ed..0e746a3e5 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -41,6 +41,11 @@ android:key="notify_in_conversation_when_highlighted" android:title="Conference notification" android:summary="Always notify when a new conference message arrives instead of only when highlighted"/> + diff --git a/src/eu/siacs/conversations/services/XmppConnectionService.java b/src/eu/siacs/conversations/services/XmppConnectionService.java index 62e487733..46da0b676 100644 --- a/src/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/eu/siacs/conversations/services/XmppConnectionService.java @@ -84,6 +84,7 @@ public class XmppConnectionService extends Service { private static final int PING_MIN_INTERVAL = 10; private static final int PING_TIMEOUT = 5; private static final int CONNECT_TIMEOUT = 60; + private static final long CARBON_GRACE_PERIOD = 60000L; private List accounts; private List conversations = null; @@ -101,6 +102,8 @@ public class XmppConnectionService extends Service { private Random mRandom = new Random(System.currentTimeMillis()); + private long lastCarbonMessageReceived = -CARBON_GRACE_PERIOD; + private ContentObserver contactObserver = new ContentObserver(null) { @Override public void onChange(boolean selfChange) { @@ -120,6 +123,12 @@ public class XmppConnectionService extends Service { MessagePacket packet) { Message message = null; boolean notify = true; + if(PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()) + .getBoolean("notification_grace_period_after_carbon_received", true)){ + notify=(SystemClock.elapsedRealtime() - lastCarbonMessageReceived) > CARBON_GRACE_PERIOD; + } + if ((packet.getType() == MessagePacket.TYPE_CHAT)) { String pgpBody = MessageParser.getPgpBody(packet); if (pgpBody != null) { @@ -143,6 +152,7 @@ public class XmppConnectionService extends Service { service); if (message != null) { if (message.getStatus() == Message.STATUS_SEND) { + lastCarbonMessageReceived = SystemClock.elapsedRealtime(); notify = false; message.getConversation().markRead(); } else { @@ -1351,4 +1361,4 @@ public class XmppConnectionService extends Service { } } -} \ No newline at end of file +}