From ecc0ef45c51a4da5753042dc9dde534dea3c2074 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 12 Jul 2017 11:03:32 +0200 Subject: [PATCH] disable foreground service if all accounts are disabled --- .../services/XmppConnectionService.java | 15 +++++++++++++-- 1 file changed, 13 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 79a823141..8d455b033 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -1085,7 +1085,7 @@ public class XmppConnectionService extends Service { } public void toggleForegroundService() { - if (keepForegroundService()) { + if (keepForegroundService() && hasEnabledAccounts()) { startForeground(NotificationService.FOREGROUND_NOTIFICATION_ID, this.mNotificationService.createForegroundNotification()); } else { stopForeground(true); @@ -1825,6 +1825,7 @@ public class XmppConnectionService extends Service { this.accounts.add(account); this.reconnectAccountInBackground(account); updateAccountUi(); + toggleForegroundService(); } public void createAccountFromKey(final String alias, final OnAccountCreated callback) { @@ -1894,6 +1895,7 @@ public class XmppConnectionService extends Service { reconnectAccountInBackground(account); updateAccountUi(); getNotificationService().updateErrorNotification(); + toggleForegroundService(); return true; } else { return false; @@ -2199,7 +2201,7 @@ public class XmppConnectionService extends Service { XmppConnection connection = account.getXmppConnection(); if (connection != null) { if (broadcastLastActivity) { - sendPresence(account, broadcastLastActivity); + sendPresence(account, true); } if (connection.getFeatures().csi()) { connection.sendInactive(); @@ -2380,6 +2382,15 @@ public class XmppConnectionService extends Service { } } + private boolean hasEnabledAccounts() { + for(Account account : this.accounts) { + if (!account.isOptionSet(Account.OPTION_DISABLED)) { + return true; + } + } + return false; + } + public void renameInMuc(final Conversation conversation, final String nick, final UiCallback callback) { final MucOptions options = conversation.getMucOptions(); final Jid joinJid = options.createJoinJid(nick);