From 8cbc0c7bc95c9c35338e55c6a9d1af4fcc6fa07d Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Mon, 2 Sep 2019 13:47:24 +0200 Subject: [PATCH] Fix #402 Signed-off-by: Mario Danic --- .../controllers/ConversationInfoController.kt | 2 +- .../nextcloud/talk/jobs/NotificationWorker.java | 16 ++++++++++++---- .../res/layout/notification_settings_item.xml | 9 +++++++++ app/src/main/res/values/strings.xml | 3 +++ 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt index 52f5021db..03636998e 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt @@ -422,7 +422,7 @@ class ConversationInfoController(args: Bundle) : BaseController(args) { } private fun fetchRoomInfo() { - ncApi!!.getRoom(credentials, ApiUtils.getRoom(conversationUser!!.baseUrl, conversationToken)) + ncApi.getRoom(credentials, ApiUtils.getRoom(conversationUser!!.baseUrl, conversationToken)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(object : Observer { 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 c415985c1..989382304 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java +++ b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java @@ -130,6 +130,7 @@ public class NotificationWorker extends Worker { private String credentials; private boolean muteCall = false; + private boolean importantConversation = false; public NotificationWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) { super(context, workerParams); @@ -145,6 +146,12 @@ public class NotificationWorker extends Worker { muteCall = Boolean.parseBoolean(arbitraryStorageEntity.getValue()); } + if ((arbitraryStorageEntity = arbitraryStorageUtils.getStorageSetting(userEntity.getId(), + "important_conversation", intent.getExtras().getString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN()))) != null) { + importantConversation = Boolean.parseBoolean(arbitraryStorageEntity.getValue()); + } + + ncApi.getRoom(credentials, ApiUtils.getRoom(userEntity.getBaseUrl(), intent.getExtras().getString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN()))) .blockingSubscribe(new Observer() { @@ -450,7 +457,8 @@ public class NotificationWorker extends Worker { NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context); notificationManager.notify(notificationId, notification); - if (!muteCall) { + + if (!notification.category.equals(Notification.CATEGORY_CALL) || !muteCall) { String ringtonePreferencesString; Uri soundUri; @@ -469,8 +477,8 @@ public class NotificationWorker extends Worker { } } - if (soundUri != null & !ApplicationWideCurrentRoomHolder.getInstance().isInCall() && - DoNotDisturbUtils.INSTANCE.shouldPlaySound()) { + if (soundUri != null && !ApplicationWideCurrentRoomHolder.getInstance().isInCall() && + (DoNotDisturbUtils.INSTANCE.shouldPlaySound() || importantConversation)) { AudioAttributes.Builder audioAttributesBuilder = new AudioAttributes.Builder().setContentType (AudioAttributes.CONTENT_TYPE_SONIFICATION); @@ -495,7 +503,7 @@ public class NotificationWorker extends Worker { } - if (DoNotDisturbUtils.INSTANCE.shouldVibrate(appPreferences.getShouldVibrateSetting())) { + if (DoNotDisturbUtils.INSTANCE.shouldVibrate(appPreferences.getShouldVibrateSetting()) || importantConversation) { Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); if (vibrator != null) { diff --git a/app/src/main/res/layout/notification_settings_item.xml b/app/src/main/res/layout/notification_settings_item.xml index 4816fdfa6..39d18d5eb 100644 --- a/app/src/main/res/layout/notification_settings_item.xml +++ b/app/src/main/res/layout/notification_settings_item.xml @@ -32,6 +32,15 @@ apc:mpc_title="@string/nc_notification_settings" apc:mpc_title_color="@color/colorPrimary"> + + Never notify Mute calls Incoming calls will be silenced + Important conversation + Notifications in this conversation will override + Do-Not-Disturb settings Sorry, something went wrong!