From 535d7229362d5a4cdcb9004ca663a548df20e39e Mon Sep 17 00:00:00 2001 From: Agnieszka C <85929121+Aga-C@users.noreply.github.com> Date: Fri, 22 Dec 2023 09:18:47 +0100 Subject: [PATCH 1/8] Added custom notifications --- .../activities/ConversationDetailsActivity.kt | 70 +++++++++++++++++++ .../smsmessenger/extensions/Context.kt | 7 ++ .../fossify/smsmessenger/helpers/Config.kt | 12 ++++ .../fossify/smsmessenger/helpers/Constants.kt | 1 + .../helpers/NotificationHelper.kt | 28 +++++--- .../layout/activity_conversation_details.xml | 44 ++++++++++++ app/src/main/res/values-pl/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 8 files changed, 154 insertions(+), 10 deletions(-) diff --git a/app/src/main/kotlin/org/fossify/smsmessenger/activities/ConversationDetailsActivity.kt b/app/src/main/kotlin/org/fossify/smsmessenger/activities/ConversationDetailsActivity.kt index 2d56e165..e4bba951 100644 --- a/app/src/main/kotlin/org/fossify/smsmessenger/activities/ConversationDetailsActivity.kt +++ b/app/src/main/kotlin/org/fossify/smsmessenger/activities/ConversationDetailsActivity.kt @@ -1,10 +1,21 @@ package org.fossify.smsmessenger.activities +import android.app.NotificationChannel +import android.app.NotificationManager +import android.content.Context +import android.content.Intent +import android.media.AudioAttributes +import android.media.AudioManager +import android.media.RingtoneManager +import android.os.Build import android.os.Bundle +import android.provider.Settings +import androidx.annotation.RequiresApi import androidx.core.content.res.ResourcesCompat import org.fossify.commons.extensions.* import org.fossify.commons.helpers.NavigationIcon import org.fossify.commons.helpers.ensureBackgroundThread +import org.fossify.commons.helpers.isOreoPlus import org.fossify.commons.models.SimpleContact import org.fossify.smsmessenger.adapters.ContactsAdapter import org.fossify.smsmessenger.databinding.ActivityConversationDetailsBinding @@ -46,6 +57,9 @@ class ConversationDetailsActivity : SimpleActivity() { runOnUiThread { setupTextViews() setupParticipants() + if (isOreoPlus()) { + setupCustomNotifications() + } } } } @@ -60,6 +74,62 @@ class ConversationDetailsActivity : SimpleActivity() { binding.membersHeading.setTextColor(primaryColor) } + @RequiresApi(Build.VERSION_CODES.O) + private fun setupCustomNotifications() { + binding.apply { + notificationsHeading.beVisible() + customNotificationsHolder.beVisible() + customNotifications.isChecked = config.customNotifications.contains(threadId.toString()) + customNotificationsButton.beVisibleIf(customNotifications.isChecked) + + customNotificationsHolder.setOnClickListener { + customNotifications.toggle() + if (customNotifications.isChecked) { + customNotificationsButton.beVisible() + config.addCustomNotificationsByThreadId(threadId) + createNotificationChannel() + } else { + customNotificationsButton.beGone() + config.removeCustomNotificationsByThreadId(threadId) + removeNotificationChannel() + } + } + + customNotificationsButton.setOnClickListener { + Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).apply { + putExtra(Settings.EXTRA_APP_PACKAGE, packageName) + putExtra(Settings.EXTRA_CHANNEL_ID, threadId.hashCode().toString()) + startActivity(this) + } + } + } + } + + private fun getNotificationManager() = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + + @RequiresApi(Build.VERSION_CODES.O) + private fun createNotificationChannel() { + val name = conversation?.title + val audioAttributes = AudioAttributes.Builder() + .setUsage(AudioAttributes.USAGE_NOTIFICATION) + .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) + .setLegacyStreamType(AudioManager.STREAM_NOTIFICATION) + .build() + + NotificationChannel(threadId.hashCode().toString(), name, NotificationManager.IMPORTANCE_HIGH).apply { + setBypassDnd(false) + enableLights(true) + setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION), audioAttributes) + enableVibration(true) + getNotificationManager().createNotificationChannel(this) + } + } + + @RequiresApi(Build.VERSION_CODES.O) + private fun removeNotificationChannel() { + getNotificationManager().deleteNotificationChannel(threadId.hashCode().toString()) + } + private fun setupTextViews() { binding.conversationName.apply { ResourcesCompat.getDrawable(resources, org.fossify.commons.R.drawable.ic_edit_vector, theme)?.apply { diff --git a/app/src/main/kotlin/org/fossify/smsmessenger/extensions/Context.kt b/app/src/main/kotlin/org/fossify/smsmessenger/extensions/Context.kt index 8dadb53c..af7c0da1 100644 --- a/app/src/main/kotlin/org/fossify/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/org/fossify/smsmessenger/extensions/Context.kt @@ -2,6 +2,7 @@ package org.fossify.smsmessenger.extensions import android.annotation.SuppressLint import android.app.Application +import android.app.NotificationManager import android.content.ContentResolver import android.content.ContentValues import android.content.Context @@ -690,6 +691,12 @@ fun Context.deleteConversation(threadId: Long) { conversationsDB.deleteThreadId(threadId) messagesDB.deleteThreadMessages(threadId) + + if (config.customNotifications.contains(threadId.toString()) && isOreoPlus()) { + config.removeCustomNotificationsByThreadId(threadId) + val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + notificationManager.deleteNotificationChannel(threadId.hashCode().toString()) + } } fun Context.checkAndDeleteOldRecycleBinMessages(callback: (() -> Unit)? = null) { diff --git a/app/src/main/kotlin/org/fossify/smsmessenger/helpers/Config.kt b/app/src/main/kotlin/org/fossify/smsmessenger/helpers/Config.kt index 3550ab60..3f95471a 100644 --- a/app/src/main/kotlin/org/fossify/smsmessenger/helpers/Config.kt +++ b/app/src/main/kotlin/org/fossify/smsmessenger/helpers/Config.kt @@ -115,4 +115,16 @@ class Config(context: Context) : BaseConfig(context) { var isArchiveAvailable: Boolean get() = prefs.getBoolean(IS_ARCHIVE_AVAILABLE, true) set(isArchiveAvailable) = prefs.edit().putBoolean(IS_ARCHIVE_AVAILABLE, isArchiveAvailable).apply() + + var customNotifications: Set + get() = prefs.getStringSet(CUSTOM_NOTIFICATIONS, HashSet())!! + set(customNotifications) = prefs.edit().putStringSet(CUSTOM_NOTIFICATIONS, customNotifications).apply() + + fun addCustomNotificationsByThreadId(threadId: Long) { + customNotifications = customNotifications.plus(threadId.toString()) + } + + fun removeCustomNotificationsByThreadId(threadId: Long) { + customNotifications = customNotifications.minus(threadId.toString()) + } } diff --git a/app/src/main/kotlin/org/fossify/smsmessenger/helpers/Constants.kt b/app/src/main/kotlin/org/fossify/smsmessenger/helpers/Constants.kt index f080960d..fe7e1cdd 100644 --- a/app/src/main/kotlin/org/fossify/smsmessenger/helpers/Constants.kt +++ b/app/src/main/kotlin/org/fossify/smsmessenger/helpers/Constants.kt @@ -44,6 +44,7 @@ const val USE_RECYCLE_BIN = "use_recycle_bin" const val LAST_RECYCLE_BIN_CHECK = "last_recycle_bin_check" const val IS_RECYCLE_BIN = "is_recycle_bin" const val IS_ARCHIVE_AVAILABLE = "is_archive_available" +const val CUSTOM_NOTIFICATIONS = "custom_notifications" private const val PATH = "org.fossify.smsmessenger.action." const val MARK_AS_READ = PATH + "mark_as_read" diff --git a/app/src/main/kotlin/org/fossify/smsmessenger/helpers/NotificationHelper.kt b/app/src/main/kotlin/org/fossify/smsmessenger/helpers/NotificationHelper.kt index 85eb9c8e..f36b85a0 100644 --- a/app/src/main/kotlin/org/fossify/smsmessenger/helpers/NotificationHelper.kt +++ b/app/src/main/kotlin/org/fossify/smsmessenger/helpers/NotificationHelper.kt @@ -45,9 +45,14 @@ class NotificationHelper(private val context: Context) { sender: String?, alertOnlyOnce: Boolean = false ) { - maybeCreateChannel(name = context.getString(R.string.channel_received_sms)) - val notificationId = threadId.hashCode() + + val hasCustomNotifications = context.config.customNotifications.contains(threadId.toString()) + val notificationChannel = if (hasCustomNotifications) notificationId.toString() else NOTIFICATION_CHANNEL + if (!hasCustomNotifications) { + maybeCreateChannel(notificationChannel, context.getString(R.string.channel_received_sms)) + } + val contentIntent = Intent(context, ThreadActivity::class.java).apply { putExtra(THREAD_ID, threadId) } @@ -98,7 +103,7 @@ class NotificationHelper(private val context: Context) { } else { null } - val builder = NotificationCompat.Builder(context, NOTIFICATION_CHANNEL).apply { + val builder = NotificationCompat.Builder(context, notificationChannel).apply { when (context.config.lockScreenVisibilitySetting) { LOCK_SCREEN_SENDER_MESSAGE -> { setLargeIcon(largeIcon) @@ -129,20 +134,24 @@ class NotificationHelper(private val context: Context) { } builder.addAction(org.fossify.commons.R.drawable.ic_check_vector, context.getString(R.string.mark_as_read), markAsReadPendingIntent) - .setChannelId(NOTIFICATION_CHANNEL) + .setChannelId(notificationChannel) if (isNoReplySms) { builder.addAction( org.fossify.commons.R.drawable.ic_delete_vector, context.getString(org.fossify.commons.R.string.delete), deleteSmsPendingIntent - ).setChannelId(NOTIFICATION_CHANNEL) + ).setChannelId(notificationChannel) } notificationManager.notify(notificationId, builder.build()) } @SuppressLint("NewApi") fun showSendingFailedNotification(recipientName: String, threadId: Long) { - maybeCreateChannel(name = context.getString(R.string.message_not_sent_short)) + val hasCustomNotifications = context.config.customNotifications.contains(threadId.toString()) + val notificationChannel = if (hasCustomNotifications) threadId.hashCode().toString() else NOTIFICATION_CHANNEL + if (!hasCustomNotifications) { + maybeCreateChannel(notificationChannel, context.getString(R.string.message_not_sent_short)) + } val notificationId = generateRandomId().hashCode() val intent = Intent(context, ThreadActivity::class.java).apply { @@ -152,7 +161,7 @@ class NotificationHelper(private val context: Context) { val summaryText = String.format(context.getString(R.string.message_sending_error), recipientName) val largeIcon = SimpleContactsHelper(context).getContactLetterIcon(recipientName) - val builder = NotificationCompat.Builder(context, NOTIFICATION_CHANNEL) + val builder = NotificationCompat.Builder(context, notificationChannel) .setContentTitle(context.getString(R.string.message_not_sent_short)) .setContentText(summaryText) .setColor(context.getProperPrimaryColor()) @@ -164,12 +173,12 @@ class NotificationHelper(private val context: Context) { .setDefaults(Notification.DEFAULT_LIGHTS) .setCategory(Notification.CATEGORY_MESSAGE) .setAutoCancel(true) - .setChannelId(NOTIFICATION_CHANNEL) + .setChannelId(notificationChannel) notificationManager.notify(notificationId, builder.build()) } - private fun maybeCreateChannel(name: String) { + private fun maybeCreateChannel(id: String, name: String) { if (isOreoPlus()) { val audioAttributes = AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_NOTIFICATION) @@ -177,7 +186,6 @@ class NotificationHelper(private val context: Context) { .setLegacyStreamType(AudioManager.STREAM_NOTIFICATION) .build() - val id = NOTIFICATION_CHANNEL val importance = IMPORTANCE_HIGH NotificationChannel(id, name, importance).apply { setBypassDnd(false) diff --git a/app/src/main/res/layout/activity_conversation_details.xml b/app/src/main/res/layout/activity_conversation_details.xml index 85739b65..e4fac71e 100644 --- a/app/src/main/res/layout/activity_conversation_details.xml +++ b/app/src/main/res/layout/activity_conversation_details.xml @@ -21,6 +21,50 @@ android:layout_marginTop="?attr/actionBarSize" android:orientation="vertical"> + + + + + + + + + + + + Oznacz jako przeczytane Oznacz jako nieprzeczytane Ja + Używaj niestandardowych powiadomień Cofnij archiwizację Usuń wszystkie zarchiwizowane rozmowy diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f40131f9..14abed85 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -58,6 +58,7 @@ Mark as Read Mark as Unread Me + Use custom notifications Unarchive Delete all archived conversations From 8c1ff75655220ad47163164072dfa78781433113 Mon Sep 17 00:00:00 2001 From: Agnieszka C <85929121+Aga-C@users.noreply.github.com> Date: Fri, 22 Dec 2023 09:53:13 +0100 Subject: [PATCH 2/8] Changed string --- app/src/main/res/layout/activity_conversation_details.xml | 2 +- app/src/main/res/values-pl/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/layout/activity_conversation_details.xml b/app/src/main/res/layout/activity_conversation_details.xml index e4fac71e..45a1f701 100644 --- a/app/src/main/res/layout/activity_conversation_details.xml +++ b/app/src/main/res/layout/activity_conversation_details.xml @@ -47,7 +47,7 @@ android:layout_marginEnd="@dimen/activity_margin" android:layout_marginBottom="@dimen/bigger_margin" android:paddingBottom="@dimen/activity_margin" - android:text="@string/use_custom_notifications" /> + android:text="@string/enable_custom_notifications" /> diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 2fc3b411..f7cf05bf 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -60,7 +60,7 @@ Oznacz jako przeczytane Oznacz jako nieprzeczytane Ja - Używaj niestandardowych powiadomień + Włącz niestandardowe powiadomienia Cofnij archiwizację Usuń wszystkie zarchiwizowane rozmowy diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 14abed85..f1e3650a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -58,7 +58,7 @@ Mark as Read Mark as Unread Me - Use custom notifications + Enable custom notifications Unarchive Delete all archived conversations From bb03460dfdcb083286a23c644c3f66d7342e8792 Mon Sep 17 00:00:00 2001 From: Agnieszka C <85929121+Aga-C@users.noreply.github.com> Date: Tue, 9 Jan 2024 23:54:11 +0100 Subject: [PATCH 3/8] Changed styles --- .../layout/activity_conversation_details.xml | 80 +++++++++---------- 1 file changed, 39 insertions(+), 41 deletions(-) diff --git a/app/src/main/res/layout/activity_conversation_details.xml b/app/src/main/res/layout/activity_conversation_details.xml index 45a1f701..ea329c8d 100644 --- a/app/src/main/res/layout/activity_conversation_details.xml +++ b/app/src/main/res/layout/activity_conversation_details.xml @@ -23,16 +23,15 @@ @@ -42,24 +41,25 @@ style="@style/SettingsCheckboxStyle" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="@dimen/bigger_margin" - android:layout_marginStart="@dimen/activity_margin" - android:layout_marginEnd="@dimen/activity_margin" - android:layout_marginBottom="@dimen/bigger_margin" - android:paddingBottom="@dimen/activity_margin" android:text="@string/enable_custom_notifications" /> - + + + + + - + android:layout_height="wrap_content"> + + + + Date: Wed, 10 Jan 2024 05:14:56 +0530 Subject: [PATCH 4/8] Adjust layout --- .../layout/activity_conversation_details.xml | 54 +++++++------------ 1 file changed, 20 insertions(+), 34 deletions(-) diff --git a/app/src/main/res/layout/activity_conversation_details.xml b/app/src/main/res/layout/activity_conversation_details.xml index ea329c8d..c050293f 100644 --- a/app/src/main/res/layout/activity_conversation_details.xml +++ b/app/src/main/res/layout/activity_conversation_details.xml @@ -45,21 +45,13 @@ - - - - - + android:layout_height="wrap_content" + android:visibility="gone" + style="@style/SettingsHolderTextViewOneLinerStyle" + android:text="@string/customize_notifications" /> - - - - - + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:drawableEnd="@drawable/ic_edit_vector" + android:drawablePadding="@dimen/bigger_margin" + android:ellipsize="end" + android:focusable="true" + android:maxLines="1" + style="@style/SettingsHolderTextViewOneLinerStyle" + android:textSize="@dimen/bigger_text_size" + tools:text="Conversation name" /> Date: Wed, 17 Jan 2024 18:10:59 +0530 Subject: [PATCH 5/8] Minor style change --- app/src/main/res/layout/activity_conversation_details.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/res/layout/activity_conversation_details.xml b/app/src/main/res/layout/activity_conversation_details.xml index c050293f..59f8b609 100644 --- a/app/src/main/res/layout/activity_conversation_details.xml +++ b/app/src/main/res/layout/activity_conversation_details.xml @@ -27,6 +27,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="gone" + tools:visibility="visible" android:text="@string/notifications" /> From 18ce6557f73ff9395817569bb1c17e67e3fe3084 Mon Sep 17 00:00:00 2001 From: Naveen Date: Wed, 17 Jan 2024 18:18:24 +0530 Subject: [PATCH 6/8] Use extension function --- .../smsmessenger/activities/ConversationDetailsActivity.kt | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/org/fossify/smsmessenger/activities/ConversationDetailsActivity.kt b/app/src/main/kotlin/org/fossify/smsmessenger/activities/ConversationDetailsActivity.kt index e4bba951..fe9f5f24 100644 --- a/app/src/main/kotlin/org/fossify/smsmessenger/activities/ConversationDetailsActivity.kt +++ b/app/src/main/kotlin/org/fossify/smsmessenger/activities/ConversationDetailsActivity.kt @@ -2,7 +2,6 @@ package org.fossify.smsmessenger.activities import android.app.NotificationChannel import android.app.NotificationManager -import android.content.Context import android.content.Intent import android.media.AudioAttributes import android.media.AudioManager @@ -105,8 +104,6 @@ class ConversationDetailsActivity : SimpleActivity() { } } - private fun getNotificationManager() = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager - @RequiresApi(Build.VERSION_CODES.O) private fun createNotificationChannel() { val name = conversation?.title @@ -121,13 +118,13 @@ class ConversationDetailsActivity : SimpleActivity() { enableLights(true) setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION), audioAttributes) enableVibration(true) - getNotificationManager().createNotificationChannel(this) + notificationManager.createNotificationChannel(this) } } @RequiresApi(Build.VERSION_CODES.O) private fun removeNotificationChannel() { - getNotificationManager().deleteNotificationChannel(threadId.hashCode().toString()) + notificationManager.deleteNotificationChannel(threadId.hashCode().toString()) } private fun setupTextViews() { From 9e9eebc5ffd23e6c522ed7bedb779b72a97df8e4 Mon Sep 17 00:00:00 2001 From: Naveen Date: Wed, 17 Jan 2024 18:20:20 +0530 Subject: [PATCH 7/8] Use extension function --- .../main/kotlin/org/fossify/smsmessenger/extensions/Context.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/kotlin/org/fossify/smsmessenger/extensions/Context.kt b/app/src/main/kotlin/org/fossify/smsmessenger/extensions/Context.kt index af7c0da1..1d38e2a4 100644 --- a/app/src/main/kotlin/org/fossify/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/org/fossify/smsmessenger/extensions/Context.kt @@ -694,7 +694,6 @@ fun Context.deleteConversation(threadId: Long) { if (config.customNotifications.contains(threadId.toString()) && isOreoPlus()) { config.removeCustomNotificationsByThreadId(threadId) - val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.deleteNotificationChannel(threadId.hashCode().toString()) } } From 1d675a1be99a219284cfc02f1f6dae5a32d00977 Mon Sep 17 00:00:00 2001 From: Naveen Date: Wed, 17 Jan 2024 18:55:36 +0530 Subject: [PATCH 8/8] Minor code improvement --- .../activities/ConversationDetailsActivity.kt | 6 +++--- .../smsmessenger/extensions/Context.kt | 2 +- .../helpers/NotificationHelper.kt | 21 +++++++++---------- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/app/src/main/kotlin/org/fossify/smsmessenger/activities/ConversationDetailsActivity.kt b/app/src/main/kotlin/org/fossify/smsmessenger/activities/ConversationDetailsActivity.kt index fe9f5f24..acccbf4e 100644 --- a/app/src/main/kotlin/org/fossify/smsmessenger/activities/ConversationDetailsActivity.kt +++ b/app/src/main/kotlin/org/fossify/smsmessenger/activities/ConversationDetailsActivity.kt @@ -97,7 +97,7 @@ class ConversationDetailsActivity : SimpleActivity() { customNotificationsButton.setOnClickListener { Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).apply { putExtra(Settings.EXTRA_APP_PACKAGE, packageName) - putExtra(Settings.EXTRA_CHANNEL_ID, threadId.hashCode().toString()) + putExtra(Settings.EXTRA_CHANNEL_ID, threadId.toString()) startActivity(this) } } @@ -113,7 +113,7 @@ class ConversationDetailsActivity : SimpleActivity() { .setLegacyStreamType(AudioManager.STREAM_NOTIFICATION) .build() - NotificationChannel(threadId.hashCode().toString(), name, NotificationManager.IMPORTANCE_HIGH).apply { + NotificationChannel(threadId.toString(), name, NotificationManager.IMPORTANCE_HIGH).apply { setBypassDnd(false) enableLights(true) setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION), audioAttributes) @@ -124,7 +124,7 @@ class ConversationDetailsActivity : SimpleActivity() { @RequiresApi(Build.VERSION_CODES.O) private fun removeNotificationChannel() { - notificationManager.deleteNotificationChannel(threadId.hashCode().toString()) + notificationManager.deleteNotificationChannel(threadId.toString()) } private fun setupTextViews() { diff --git a/app/src/main/kotlin/org/fossify/smsmessenger/extensions/Context.kt b/app/src/main/kotlin/org/fossify/smsmessenger/extensions/Context.kt index 1d38e2a4..23b47609 100644 --- a/app/src/main/kotlin/org/fossify/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/org/fossify/smsmessenger/extensions/Context.kt @@ -694,7 +694,7 @@ fun Context.deleteConversation(threadId: Long) { if (config.customNotifications.contains(threadId.toString()) && isOreoPlus()) { config.removeCustomNotificationsByThreadId(threadId) - notificationManager.deleteNotificationChannel(threadId.hashCode().toString()) + notificationManager.deleteNotificationChannel(threadId.toString()) } } diff --git a/app/src/main/kotlin/org/fossify/smsmessenger/helpers/NotificationHelper.kt b/app/src/main/kotlin/org/fossify/smsmessenger/helpers/NotificationHelper.kt index f36b85a0..32a89083 100644 --- a/app/src/main/kotlin/org/fossify/smsmessenger/helpers/NotificationHelper.kt +++ b/app/src/main/kotlin/org/fossify/smsmessenger/helpers/NotificationHelper.kt @@ -45,14 +45,13 @@ class NotificationHelper(private val context: Context) { sender: String?, alertOnlyOnce: Boolean = false ) { - val notificationId = threadId.hashCode() - val hasCustomNotifications = context.config.customNotifications.contains(threadId.toString()) - val notificationChannel = if (hasCustomNotifications) notificationId.toString() else NOTIFICATION_CHANNEL + val notificationChannelId = if (hasCustomNotifications) threadId.toString() else NOTIFICATION_CHANNEL if (!hasCustomNotifications) { - maybeCreateChannel(notificationChannel, context.getString(R.string.channel_received_sms)) + maybeCreateChannel(notificationChannelId, context.getString(R.string.channel_received_sms)) } + val notificationId = threadId.hashCode() val contentIntent = Intent(context, ThreadActivity::class.java).apply { putExtra(THREAD_ID, threadId) } @@ -103,7 +102,7 @@ class NotificationHelper(private val context: Context) { } else { null } - val builder = NotificationCompat.Builder(context, notificationChannel).apply { + val builder = NotificationCompat.Builder(context, notificationChannelId).apply { when (context.config.lockScreenVisibilitySetting) { LOCK_SCREEN_SENDER_MESSAGE -> { setLargeIcon(largeIcon) @@ -134,13 +133,13 @@ class NotificationHelper(private val context: Context) { } builder.addAction(org.fossify.commons.R.drawable.ic_check_vector, context.getString(R.string.mark_as_read), markAsReadPendingIntent) - .setChannelId(notificationChannel) + .setChannelId(notificationChannelId) if (isNoReplySms) { builder.addAction( org.fossify.commons.R.drawable.ic_delete_vector, context.getString(org.fossify.commons.R.string.delete), deleteSmsPendingIntent - ).setChannelId(notificationChannel) + ).setChannelId(notificationChannelId) } notificationManager.notify(notificationId, builder.build()) } @@ -148,9 +147,9 @@ class NotificationHelper(private val context: Context) { @SuppressLint("NewApi") fun showSendingFailedNotification(recipientName: String, threadId: Long) { val hasCustomNotifications = context.config.customNotifications.contains(threadId.toString()) - val notificationChannel = if (hasCustomNotifications) threadId.hashCode().toString() else NOTIFICATION_CHANNEL + val notificationChannelId = if (hasCustomNotifications) threadId.toString() else NOTIFICATION_CHANNEL if (!hasCustomNotifications) { - maybeCreateChannel(notificationChannel, context.getString(R.string.message_not_sent_short)) + maybeCreateChannel(notificationChannelId, context.getString(R.string.message_not_sent_short)) } val notificationId = generateRandomId().hashCode() @@ -161,7 +160,7 @@ class NotificationHelper(private val context: Context) { val summaryText = String.format(context.getString(R.string.message_sending_error), recipientName) val largeIcon = SimpleContactsHelper(context).getContactLetterIcon(recipientName) - val builder = NotificationCompat.Builder(context, notificationChannel) + val builder = NotificationCompat.Builder(context, notificationChannelId) .setContentTitle(context.getString(R.string.message_not_sent_short)) .setContentText(summaryText) .setColor(context.getProperPrimaryColor()) @@ -173,7 +172,7 @@ class NotificationHelper(private val context: Context) { .setDefaults(Notification.DEFAULT_LIGHTS) .setCategory(Notification.CATEGORY_MESSAGE) .setAutoCancel(true) - .setChannelId(notificationChannel) + .setChannelId(notificationChannelId) notificationManager.notify(notificationId, builder.build()) }