diff --git a/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java b/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java index 47f663f48..4a55779fe 100644 --- a/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java @@ -28,6 +28,7 @@ import org.thoughtcrime.securesms.ApplicationPreferencesActivity; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.connect.DcHelper; import org.thoughtcrime.securesms.connect.KeepAliveService; +import org.thoughtcrime.securesms.notifications.FcmReceiveService; import org.thoughtcrime.securesms.util.Prefs; public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragment implements Preference.OnPreferenceChangeListener { @@ -99,6 +100,7 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme notificationsEnabled.setOnPreferenceChangeListener((preference, newValue) -> { boolean enabled = (Boolean) newValue; dcContext.setMuted(!enabled); + notificationsEnabled.setSummary(getSummary(getContext(), "")); return true; }); } @@ -126,6 +128,7 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme // update ignoreBattery in onResume() to reflects changes done in the system settings ignoreBattery.setChecked(isIgnoringBatteryOptimizations()); notificationsEnabled.setChecked(!dcContext.isMuted()); + notificationsEnabled.setSummary(getSummary(getContext(), "")); mentionNotifEnabled.setChecked(dcContext.isMentionsEnabled()); // set without altering "unset" state of the preference @@ -160,6 +163,7 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme } else { context.stopService(new Intent(context, KeepAliveService.class)); } + notificationsEnabled.setSummary(getSummary(context, "")); return true; } @@ -239,11 +243,21 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme } public static CharSequence getSummary(Context context) { + return getSummary(context, context.getString(R.string.on)); + } + + public static CharSequence getSummary(Context context, String defaultOnValue) { NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU || notificationManager.areNotificationsEnabled()) { - return context.getString(DcHelper.getContext(context).isMuted() ? R.string.off : R.string.on); + if (DcHelper.getContext(context).isMuted()) { + return "⚠️ " + context.getString(R.string.notifications_disabled); + } + if (FcmReceiveService.getToken() == null && !Prefs.reliableService(context)) { + return "⚠️ " + context.getString(R.string.unreliable_bg_notifications); + } + return defaultOnValue; } else { - return context.getString(R.string.disabled_in_system_settings); + return "⚠️ " + context.getString(R.string.disabled_in_system_settings); } } } diff --git a/src/main/java/org/thoughtcrime/securesms/util/Prefs.java b/src/main/java/org/thoughtcrime/securesms/util/Prefs.java index b7a3ee0c4..355b56d63 100644 --- a/src/main/java/org/thoughtcrime/securesms/util/Prefs.java +++ b/src/main/java/org/thoughtcrime/securesms/util/Prefs.java @@ -228,7 +228,7 @@ public class Prefs { } // if the key was unset, then calculate default value - return isPushEnabled(context) || !DcHelper.getAccounts(context).isAllChatmail(); + return !isPushEnabled(context) || !DcHelper.getAccounts(context).isAllChatmail(); } // vibrate diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 8914a2144..b7733bae9 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1035,6 +1035,7 @@ Name only No name or message Notifications disabled + Push-notifications unavailable, please enable Force Background Connection for reliable notifications New messages You have new messages