From bae7eaea09cce751dc2cbfb1292f1b13eb14758f Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Thu, 3 Oct 2019 12:53:18 +0200 Subject: [PATCH] Fix #649, fix #645 Signed-off-by: Mario Danic --- .../talk/jobs/NotificationWorker.java | 9 ++++-- .../nextcloud/talk/utils/DoNotDisturbUtils.kt | 31 +++++++++++++++++++ app/src/main/res/values/strings.xml | 7 ++--- 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java index 7bb2830ca..36fb25aa5 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java +++ b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java @@ -84,7 +84,6 @@ import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.arbitrarystorage.ArbitraryStorageUtils; import com.nextcloud.talk.utils.preferences.AppPreferences; import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder; -import com.vanniktech.emoji.emoji.Emoji; import org.parceler.Parcels; @@ -154,6 +153,12 @@ public class NotificationWorker extends Worker { } + if (DoNotDisturbUtils.INSTANCE.isDnDActive()) { + if (!DoNotDisturbUtils.INSTANCE.isInDoNotDisturbWithPriority() || !importantConversation || muteCall) { + return; + } + } + ncApi.getRoom(credentials, ApiUtils.getRoom(userEntity.getBaseUrl(), intent.getExtras().getString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN()))) .blockingSubscribe(new Observer() { @@ -474,7 +479,7 @@ public class NotificationWorker extends Worker { notificationManager.notify(notificationId, notification); - if (!notification.category.equals(Notification.CATEGORY_CALL) || !muteCall) { + if (!notification.category.equals(Notification.CATEGORY_CALL)) { String ringtonePreferencesString; Uri soundUri; diff --git a/app/src/main/java/com/nextcloud/talk/utils/DoNotDisturbUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/DoNotDisturbUtils.kt index e7140d06b..ca624cb36 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/DoNotDisturbUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/DoNotDisturbUtils.kt @@ -28,6 +28,37 @@ import android.os.Vibrator import com.nextcloud.talk.application.NextcloudTalkApplication object DoNotDisturbUtils { + fun isDnDActive() : Boolean { + val context = NextcloudTalkApplication.sharedApplication?.applicationContext + + val notificationManager = context?.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (notificationManager.currentInterruptionFilter == NotificationManager + .INTERRUPTION_FILTER_NONE || notificationManager + .currentInterruptionFilter == NotificationManager + .INTERRUPTION_FILTER_ALARMS || notificationManager + .currentInterruptionFilter == NotificationManager.INTERRUPTION_FILTER_PRIORITY) { + return true + } + } + + return false + + } + + fun isInDoNotDisturbWithPriority(): Boolean { + val context = NextcloudTalkApplication.sharedApplication?.applicationContext + + val notificationManager = context?.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (notificationManager.currentInterruptionFilter == NotificationManager.INTERRUPTION_FILTER_PRIORITY) { + return true + } + } + + return false + } + fun shouldPlaySound(): Boolean { val context = NextcloudTalkApplication.sharedApplication?.applicationContext diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9d203d22c..28771aec1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -201,10 +201,9 @@ Notify when mentioned Never notify Mute calls - Incoming calls will be silenced + Incoming calls will be ignored Important conversation - Notifications in this conversation will override - Do Not Disturb settings + Calls and message notifications will be shown even while in Do not disturb mode (follows system "Allow priority interruptions only" configuration) Sorry, something went wrong! @@ -298,5 +297,5 @@ You are currently waiting in the lobby. You are currently waiting in the lobby.\n This meeting is scheduled for %1$s. - Manual + Not set