From 83c3cc6a6d1ec728dea073b0429352dc7523f000 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Tue, 3 Sep 2024 15:52:37 -0400 Subject: [PATCH] Fix notifications not showing after contact permission revoked on Android 15. Fixes #13671 --- .../securesms/notifications/v2/NotificationBuilder.kt | 2 +- .../securesms/notifications/v2/NotificationItem.kt | 6 ++++-- .../org/thoughtcrime/securesms/util/ConversationUtil.java | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationBuilder.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationBuilder.kt index 4d1d89f57b..5cb706380b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationBuilder.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationBuilder.kt @@ -289,7 +289,7 @@ sealed class NotificationBuilder(protected val context: Context) { val personBuilder: PersonCompat.Builder = PersonCompat.Builder() .setBot(false) .setName(notificationItem.getPersonName(context)) - .setUri(notificationItem.getPersonUri()) + .setUri(notificationItem.getPersonUri(context)) .setIcon(notificationItem.getPersonIcon(context)) if (includeShortcut) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationItem.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationItem.kt index 69e444d1af..a6b54a93bb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationItem.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationItem.kt @@ -1,5 +1,6 @@ package org.thoughtcrime.securesms.notifications.v2 +import android.Manifest import android.content.Context import android.net.Uri import android.text.SpannableString @@ -22,6 +23,7 @@ import org.thoughtcrime.securesms.database.model.databaseprotos.BodyRangeList import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.mms.Slide import org.thoughtcrime.securesms.mms.SlideDeck +import org.thoughtcrime.securesms.permissions.Permissions import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.RecipientUtil import org.thoughtcrime.securesms.service.KeyCachingService @@ -115,8 +117,8 @@ sealed class NotificationItem(val threadRecipient: Recipient, protected val reco return timestamp.compareTo(other.timestamp) } - fun getPersonUri(): String? { - return if (SignalStore.settings.messageNotificationsPrivacy.isDisplayContact && authorRecipient.isSystemContact) { + fun getPersonUri(context: Context): String? { + return if (SignalStore.settings.messageNotificationsPrivacy.isDisplayContact && authorRecipient.isSystemContact && Permissions.hasAny(context, Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS)) { authorRecipient.contactUri.toString() } else { null diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/ConversationUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/ConversationUtil.java index a2663f0252..5af2866945 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/ConversationUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/ConversationUtil.java @@ -281,7 +281,7 @@ public final class ConversationUtil { return new Person.Builder() .setKey(getShortcutId(recipient.getId())) .setName(recipient.getDisplayName(context)) - .setUri(recipient.isSystemContact() ? recipient.getContactUri().toString() : null) + .setUri(recipient.isSystemContact() && Permissions.hasAny(context, Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS) ? recipient.getContactUri().toString() : null) .build(); }