From ecf0e23144a602108a3219acf917e028de9aaf63 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 8 Apr 2024 14:25:14 +0200 Subject: [PATCH] remove quiet hours --- .../services/NotificationService.java | 119 ++++++++---------- 1 file changed, 49 insertions(+), 70 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/services/NotificationService.java b/src/main/java/eu/siacs/conversations/services/NotificationService.java index ec052769c..a1cfef7e3 100644 --- a/src/main/java/eu/siacs/conversations/services/NotificationService.java +++ b/src/main/java/eu/siacs/conversations/services/NotificationService.java @@ -110,7 +110,8 @@ public class NotificationService { public static final int ONGOING_CALL_NOTIFICATION_ID = NOTIFICATION_ID_MULTIPLIER * 10; public static final int MISSED_CALL_NOTIFICATION_ID = NOTIFICATION_ID_MULTIPLIER * 12; private static final int DELIVERY_FAILED_NOTIFICATION_ID = NOTIFICATION_ID_MULTIPLIER * 13; - public static final int ONGOING_VIDEO_TRANSCODING_NOTIFICATION_ID = NOTIFICATION_ID_MULTIPLIER * 14; + public static final int ONGOING_VIDEO_TRANSCODING_NOTIFICATION_ID = + NOTIFICATION_ID_MULTIPLIER * 14; private final XmppConnectionService mXmppConnectionService; private final LinkedHashMap> notifications = new LinkedHashMap<>(); private final HashMap mBacklogMessageCounter = new HashMap<>(); @@ -282,20 +283,6 @@ public class NotificationService { silentMessagesChannel.setGroup("chats"); notificationManager.createNotificationChannel(silentMessagesChannel); - final NotificationChannel quietHoursChannel = - new NotificationChannel( - "quiet_hours", - c.getString(R.string.title_pref_quiet_hours), - NotificationManager.IMPORTANCE_LOW); - quietHoursChannel.setShowBadge(true); - quietHoursChannel.setLightColor(LED_COLOR); - quietHoursChannel.enableLights(true); - quietHoursChannel.setGroup("chats"); - quietHoursChannel.enableVibration(false); - quietHoursChannel.setSound(null, null); - - notificationManager.createNotificationChannel(quietHoursChannel); - final NotificationChannel deliveryFailedChannel = new NotificationChannel( "delivery_failed", @@ -331,28 +318,6 @@ public class NotificationService { "notifications_from_strangers", R.bool.notifications_from_strangers); } - private boolean isQuietHours() { - if (!mXmppConnectionService.getBooleanPreference( - "enable_quiet_hours", R.bool.enable_quiet_hours)) { - return false; - } - final SharedPreferences preferences = - PreferenceManager.getDefaultSharedPreferences(mXmppConnectionService); - final long startTime = - TimePreference.minutesToTimestamp( - preferences.getLong("quiet_hours_start", TimePreference.DEFAULT_VALUE)); - final long endTime = - TimePreference.minutesToTimestamp( - preferences.getLong("quiet_hours_end", TimePreference.DEFAULT_VALUE)); - final long nowTime = Calendar.getInstance().getTimeInMillis(); - - if (endTime < startTime) { - return nowTime > startTime || nowTime < endTime; - } else { - return nowTime > startTime && nowTime < endTime; - } - } - public void pushFromBacklog(final Message message) { if (notifyMessage(message)) { synchronized (notifications) { @@ -508,7 +473,8 @@ public class NotificationService { public synchronized void startRinging( final AbstractJingleConnection.Id id, final Set media) { showIncomingCallNotification(id, media); - final NotificationManager notificationManager = mXmppConnectionService.getSystemService(NotificationManager.class); + final NotificationManager notificationManager = + mXmppConnectionService.getSystemService(NotificationManager.class); final int currentInterruptionFilter; if (notificationManager != null) { currentInterruptionFilter = notificationManager.getCurrentInterruptionFilter(); @@ -786,7 +752,8 @@ public class NotificationService { public void clearMissedCall(final Message message) { synchronized (mMissedCalls) { - final Iterator> iterator = mMissedCalls.entrySet().iterator(); + final Iterator> iterator = + mMissedCalls.entrySet().iterator(); while (iterator.hasNext()) { final Map.Entry entry = iterator.next(); final Conversational conversational = entry.getKey(); @@ -794,7 +761,10 @@ public class NotificationService { if (conversational.getUuid().equals(message.getConversation().getUuid())) { if (missedCallsInfo.removeMissedCall()) { cancel(conversational.getUuid(), MISSED_CALL_NOTIFICATION_ID); - Log.d(Config.LOGTAG,conversational.getAccount().getJid().asBareJid()+": dismissed missed call because call was picked up on other device"); + Log.d( + Config.LOGTAG, + conversational.getAccount().getJid().asBareJid() + + ": dismissed missed call because call was picked up on other device"); iterator.remove(); } } @@ -860,8 +830,6 @@ public class NotificationService { final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mXmppConnectionService); - final boolean quiteHours = isQuietHours(); - final boolean notifyOnlyOneChild = notify && conversations != null @@ -869,7 +837,7 @@ public class NotificationService { == 1; // if this check is changed to > 0 catchup messages will // create one notification per conversation - if (notifications.size() == 0) { + if (notifications.isEmpty()) { cancel(NOTIFICATION_ID); } else { if (notify) { @@ -878,29 +846,27 @@ public class NotificationService { final Builder mBuilder; if (notifications.size() == 1 && Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { mBuilder = - buildSingleConversations( - notifications.values().iterator().next(), notify, quiteHours); - modifyForSoundVibrationAndLight(mBuilder, notify, quiteHours, preferences); + buildSingleConversations(notifications.values().iterator().next(), notify); + modifyForSoundVibrationAndLight(mBuilder, notify, preferences); notify(NOTIFICATION_ID, mBuilder.build()); } else { - mBuilder = buildMultipleConversation(notify, quiteHours); + mBuilder = buildMultipleConversation(notify); if (notifyOnlyOneChild) { mBuilder.setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_CHILDREN); } - modifyForSoundVibrationAndLight(mBuilder, notify, quiteHours, preferences); + modifyForSoundVibrationAndLight(mBuilder, notify, preferences); if (!summaryOnly) { for (Map.Entry> entry : notifications.entrySet()) { String uuid = entry.getKey(); final boolean notifyThis = notifyOnlyOneChild ? conversations.contains(uuid) : notify; Builder singleBuilder = - buildSingleConversations(entry.getValue(), notifyThis, quiteHours); + buildSingleConversations(entry.getValue(), notifyThis); if (!notifyOnlyOneChild) { singleBuilder.setGroupAlertBehavior( NotificationCompat.GROUP_ALERT_SUMMARY); } - modifyForSoundVibrationAndLight( - singleBuilder, notifyThis, quiteHours, preferences); + modifyForSoundVibrationAndLight(singleBuilder, notifyThis, preferences); singleBuilder.setGroup(MESSAGES_GROUP); setNotificationColor(singleBuilder); notify(entry.getKey(), NOTIFICATION_ID, singleBuilder.build()); @@ -937,7 +903,7 @@ public class NotificationService { } private void modifyForSoundVibrationAndLight( - Builder mBuilder, boolean notify, boolean quietHours, SharedPreferences preferences) { + final Builder mBuilder, final boolean notify, final SharedPreferences preferences) { final Resources resources = mXmppConnectionService.getResources(); final String ringtone = preferences.getString( @@ -947,10 +913,14 @@ public class NotificationService { preferences.getBoolean( AppSettings.NOTIFICATION_VIBRATE, resources.getBoolean(R.bool.vibrate_on_notification)); - final boolean led = preferences.getBoolean(AppSettings.NOTIFICATION_LED, resources.getBoolean(R.bool.led)); + final boolean led = + preferences.getBoolean( + AppSettings.NOTIFICATION_LED, resources.getBoolean(R.bool.led)); final boolean headsup = - preferences.getBoolean(AppSettings.NOTIFICATION_HEADS_UP, resources.getBoolean(R.bool.headsup_notifications)); - if (notify && !quietHours) { + preferences.getBoolean( + AppSettings.NOTIFICATION_HEADS_UP, + resources.getBoolean(R.bool.headsup_notifications)); + if (notify) { if (vibrate) { final int dat = 70; final long[] pattern = {0, 3 * dat, dat, dat}; @@ -1116,11 +1086,11 @@ public class NotificationService { setNotificationColor(builder); } - private Builder buildMultipleConversation(final boolean notify, final boolean quietHours) { + private Builder buildMultipleConversation(final boolean notify) { final Builder mBuilder = new NotificationCompat.Builder( mXmppConnectionService, - quietHours ? "quiet_hours" : (notify ? MESSAGES_NOTIFICATION_CHANNEL : "silent_messages")); + notify ? MESSAGES_NOTIFICATION_CHANNEL : "silent_messages"); final NotificationCompat.InboxStyle style = new NotificationCompat.InboxStyle(); style.setBigContentTitle( mXmppConnectionService @@ -1185,8 +1155,8 @@ public class NotificationService { } private Builder buildSingleConversations( - final ArrayList messages, final boolean notify, final boolean quietHours) { - final var channel = quietHours ? "quiet_hours" : (notify ? MESSAGES_NOTIFICATION_CHANNEL : "silent_messages"); + final ArrayList messages, final boolean notify) { + final var channel = notify ? MESSAGES_NOTIFICATION_CHANNEL : "silent_messages"; final Builder notificationBuilder = new NotificationCompat.Builder(mXmppConnectionService, channel); if (messages.isEmpty()) { @@ -1672,21 +1642,34 @@ public class NotificationService { } private PendingIntent createCallAction(String sessionId, final String action, int requestCode) { - return pendingServiceIntent(mXmppConnectionService, action, requestCode, ImmutableMap.of(RtpSessionActivity.EXTRA_SESSION_ID, sessionId)); + return pendingServiceIntent( + mXmppConnectionService, + action, + requestCode, + ImmutableMap.of(RtpSessionActivity.EXTRA_SESSION_ID, sessionId)); } private PendingIntent createSnoozeIntent(final Conversation conversation) { - return pendingServiceIntent(mXmppConnectionService, XmppConnectionService.ACTION_SNOOZE, generateRequestCode(conversation,22),ImmutableMap.of("uuid",conversation.getUuid())); + return pendingServiceIntent( + mXmppConnectionService, + XmppConnectionService.ACTION_SNOOZE, + generateRequestCode(conversation, 22), + ImmutableMap.of("uuid", conversation.getUuid())); } - private static PendingIntent pendingServiceIntent(final Context context, final String action, final int requestCode) { + private static PendingIntent pendingServiceIntent( + final Context context, final String action, final int requestCode) { return pendingServiceIntent(context, action, requestCode, ImmutableMap.of()); } - private static PendingIntent pendingServiceIntent(final Context context, final String action, final int requestCode, final Map extras) { + private static PendingIntent pendingServiceIntent( + final Context context, + final String action, + final int requestCode, + final Map extras) { final Intent intent = new Intent(context, XmppConnectionService.class); intent.setAction(action); - for(final Map.Entry entry : extras.entrySet()) { + for (final Map.Entry entry : extras.entrySet()) { intent.putExtra(entry.getKey(), entry.getValue()); } return PendingIntent.getService( @@ -1748,8 +1731,7 @@ public class NotificationService { connected = 0; } else { enabled = Iterables.size(Iterables.filter(accounts, Account::isEnabled)); - connected = - Iterables.size(Iterables.filter(accounts, Account::isOnlineAndConnected)); + connected = Iterables.size(Iterables.filter(accounts, Account::isOnlineAndConnected)); } mBuilder.setContentText( mXmppConnectionService.getString(R.string.connected_accounts, connected, enabled)); @@ -1759,10 +1741,7 @@ public class NotificationService { } mBuilder.setWhen(0) .setPriority(Notification.PRIORITY_MIN) - .setSmallIcon( - connected > 0 - ? R.drawable.ic_link_24dp - : R.drawable.ic_link_off_24dp) + .setSmallIcon(connected > 0 ? R.drawable.ic_link_24dp : R.drawable.ic_link_off_24dp) .setLocalOnly(true); if (Compatibility.runsTwentySix()) {