make fcm receiver ignore messages when all accounts are disabled

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/services/EventReceiver.java            | 2 
src/playstore/java/eu/siacs/conversations/services/PushMessageReceiver.java | 7 
2 files changed, 8 insertions(+), 1 deletion(-)

Detailed changes

src/main/java/eu/siacs/conversations/services/EventReceiver.java 🔗

@@ -34,7 +34,7 @@ public class EventReceiver extends BroadcastReceiver {
 		}
 	}
 
-	public boolean hasEnabledAccounts(Context context) {
+	public static boolean hasEnabledAccounts(Context context) {
 		return PreferenceManager.getDefaultSharedPreferences(context).getBoolean(SETTING_ENABLED_ACCOUNTS,true);
 	}
 

src/playstore/java/eu/siacs/conversations/services/PushMessageReceiver.java 🔗

@@ -1,16 +1,23 @@
 package eu.siacs.conversations.services;
 
 import android.content.Intent;
+import android.util.Log;
 
 import com.google.firebase.messaging.FirebaseMessagingService;
 import com.google.firebase.messaging.RemoteMessage;
 
 import java.util.Map;
 
+import eu.siacs.conversations.Config;
+
 public class PushMessageReceiver extends FirebaseMessagingService {
 
 	@Override
 	public void onMessageReceived(RemoteMessage message) {
+		if (!EventReceiver.hasEnabledAccounts(this)) {
+			Log.d(Config.LOGTAG,"PushMessageReceiver ignored message because no accounts are enabled");
+			return;
+		}
 		Map<String, String> data = message.getData();
 		Intent intent = new Intent(this, XmppConnectionService.class);
 		intent.setAction(XmppConnectionService.ACTION_FCM_MESSAGE_RECEIVED);