From c30e3cc1b7218bfacad3f68711312e9ef3105eb0 Mon Sep 17 00:00:00 2001 From: jeffrey-signal Date: Wed, 15 Apr 2026 11:44:52 -0400 Subject: [PATCH] Disable group member labels while in message request state. --- .../ConversationSettingsRepository.kt | 2 +- .../conversation/ConversationRepository.java | 4 +- .../memberlabel/MemberLabelRepository.kt | 18 ++++++++- .../securesms/jobs/SendReadReceiptJob.java | 14 +++---- .../securesms/jobs/SendViewedReceiptJob.java | 6 +-- .../MessageRequestRepository.java | 6 +-- .../notifications/v2/NotificationBuilder.kt | 2 +- .../notifications/v2/NotificationItem.kt | 2 +- .../securesms/recipients/RecipientUtil.java | 39 ++++++++----------- .../securesms/recipients/RecipientUtilTest.kt | 30 +++++++------- 10 files changed, 65 insertions(+), 58 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsRepository.kt index c92b688d30..b4c316ca7a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsRepository.kt @@ -215,7 +215,7 @@ class ConversationSettingsRepository( @WorkerThread fun isMessageRequestAccepted(recipient: Recipient): Boolean { - return RecipientUtil.isMessageRequestAccepted(context, recipient) + return RecipientUtil.isMessageRequestAccepted(recipient) } fun getMembershipCountDescription(liveGroup: LiveGroup): LiveData { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationRepository.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationRepository.java index 6c8abd0ca6..52da1d8fd6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationRepository.java @@ -40,7 +40,7 @@ public class ConversationRepository { private static final String TAG = Log.tag(ConversationRepository.class); - private final Context context; + private final Context context; public ConversationRepository() { this.context = AppDependencies.getApplication(); @@ -54,7 +54,7 @@ public class ConversationRepository { int lastSeenPosition = 0; long lastScrolled = metadata.getLastScrolled(); int lastScrolledPosition = 0; - boolean isMessageRequestAccepted = RecipientUtil.isMessageRequestAccepted(context, threadId); + boolean isMessageRequestAccepted = RecipientUtil.isMessageRequestAccepted(threadId); boolean isConversationHidden = RecipientUtil.isRecipientHidden(threadId); ConversationData.MessageRequestData messageRequestData = new ConversationData.MessageRequestData(isMessageRequestAccepted, isConversationHidden); boolean showUniversalExpireTimerUpdate = false; diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelRepository.kt index 53a633dbae..8f3d91d5fa 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelRepository.kt @@ -15,6 +15,7 @@ import org.thoughtcrime.securesms.conversation.colors.ColorizerV2 import org.thoughtcrime.securesms.conversation.colors.NameColor import org.thoughtcrime.securesms.database.GroupTable import org.thoughtcrime.securesms.database.SignalDatabase +import org.thoughtcrime.securesms.database.model.GroupRecord import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.groups.GroupAccessControl import org.thoughtcrime.securesms.groups.GroupId @@ -23,6 +24,7 @@ import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.keyvalue.UiHintValues import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.RecipientId +import org.thoughtcrime.securesms.recipients.RecipientUtil import org.whispersystems.signalservice.api.NetworkResult /** @@ -56,6 +58,7 @@ class MemberLabelRepository private constructor( fun getLabelSync(groupId: GroupId.V2, recipient: Recipient): MemberLabel? { val aci = recipient.serviceId.orNull() as? ServiceId.ACI ?: return null val groupRecord = groupsTable.getGroup(groupId).orNull() ?: return null + if (!isSelfAnActiveGroupMember(groupRecord)) return null return groupRecord.requireV2GroupProperties().memberLabel(aci)?.sanitized() } @@ -66,8 +69,9 @@ class MemberLabelRepository private constructor( @WorkerThread fun getLabelsSync(groupId: GroupId.V2, recipients: Collection): Map { val groupRecord = groupsTable.getGroup(groupId).orNull() ?: return emptyMap() - val labelsByAci = groupRecord.requireV2GroupProperties().memberLabelsByAci() + if (!isSelfAnActiveGroupMember(groupRecord)) return emptyMap() + val labelsByAci = groupRecord.requireV2GroupProperties().memberLabelsByAci() return buildMap { recipients.forEach { recipient -> val aci = recipient.serviceId.orNull() as? ServiceId.ACI @@ -98,6 +102,7 @@ class MemberLabelRepository private constructor( suspend fun canSetLabel(groupId: GroupId.V2, recipient: Recipient): Boolean = withContext(Dispatchers.IO) { val groupRecord = groupsTable.getGroup(groupId).orNull() ?: return@withContext false + if (!isSelfAnActiveGroupMember(groupRecord)) return@withContext false if (groupRecord.isTerminated) return@withContext false val memberLevel = groupRecord.memberLevel(recipient) @@ -124,8 +129,9 @@ class MemberLabelRepository private constructor( */ suspend fun getMembersWithLabels(groupId: GroupId.V2): List = withContext(Dispatchers.IO) { val groupRecord = groupsTable.getGroup(groupId).orNull() ?: return@withContext emptyList() - val groupProperties = groupRecord.requireV2GroupProperties() + if (!isSelfAnActiveGroupMember(groupRecord)) return@withContext emptyList() + val groupProperties = groupRecord.requireV2GroupProperties() val allMembers = groupProperties.getMemberRecipients(GroupTable.MemberSet.FULL_MEMBERS_INCLUDING_SELF) val colorizer = ColorizerV2(groupMemberIds = allMembers.mapNotNull { it.serviceId.orNull() }) val labelsByAci = groupProperties.memberLabelsByAci() @@ -160,6 +166,14 @@ class MemberLabelRepository private constructor( fun markMemberLabelAboutOverrideWarningDismissed() { uiHints.markMemberLabelAboutOverrideWarningDismissed() } + + @WorkerThread + private fun isSelfAnActiveGroupMember(groupRecord: GroupRecord): Boolean { + return when { + !groupRecord.memberLevel(Recipient.self()).isInGroup -> false + else -> RecipientUtil.isMessageRequestAccepted(Recipient.resolved(groupRecord.recipientId)) + } + } } private fun MemberLabel.sanitized(): MemberLabel = this.copy( diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendReadReceiptJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendReadReceiptJob.java index dd6b1a90ec..917a87b601 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendReadReceiptJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendReadReceiptJob.java @@ -64,12 +64,12 @@ public class SendReadReceiptJob extends BaseJob { @VisibleForTesting public SendReadReceiptJob(long threadId, @NonNull RecipientId recipientId, List messageSentTimestamps, List messageIds) { this(new Job.Parameters.Builder() - .addConstraint(NetworkConstraint.KEY) - .addConstraint(SealedSenderConstraint.KEY) - .setLifespan(TimeUnit.DAYS.toMillis(1)) - .setMaxAttempts(Parameters.UNLIMITED) - .setQueue(recipientId.toQueueKey()) - .build(), + .addConstraint(NetworkConstraint.KEY) + .addConstraint(SealedSenderConstraint.KEY) + .setLifespan(TimeUnit.DAYS.toMillis(1)) + .setMaxAttempts(Parameters.UNLIMITED) + .setQueue(recipientId.toQueueKey()) + .build(), threadId, recipientId, ensureSize(messageSentTimestamps, MAX_TIMESTAMPS), @@ -151,7 +151,7 @@ public class SendReadReceiptJob extends BaseJob { if (!TextSecurePreferences.isReadReceiptsEnabled(context) || messageSentTimestamps.isEmpty()) return; - if (!RecipientUtil.isMessageRequestAccepted(context, threadId)) { + if (!RecipientUtil.isMessageRequestAccepted(threadId)) { Log.w(TAG, "Refusing to send receipts to untrusted recipient"); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendViewedReceiptJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendViewedReceiptJob.java index ffab5ef933..1cd7dbf6e8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendViewedReceiptJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendViewedReceiptJob.java @@ -171,7 +171,7 @@ public class SendViewedReceiptJob extends BaseJob { return; } - if (!RecipientUtil.isMessageRequestAccepted(context, threadId)) { + if (!RecipientUtil.isMessageRequestAccepted(threadId)) { Log.w(TAG, "Refusing to send receipts to untrusted recipient"); return; } @@ -203,8 +203,8 @@ public class SendViewedReceiptJob extends BaseJob { return; } - SignalServiceMessageSender messageSender = AppDependencies.getSignalServiceMessageSender(); - SignalServiceAddress remoteAddress = RecipientUtil.toSignalServiceAddress(context, recipient); + SignalServiceMessageSender messageSender = AppDependencies.getSignalServiceMessageSender(); + SignalServiceAddress remoteAddress = RecipientUtil.toSignalServiceAddress(context, recipient); SignalServiceReceiptMessage receiptMessage = new SignalServiceReceiptMessage(SignalServiceReceiptMessage.Type.VIEWED, messageSentTimestamps, timestamp); diff --git a/app/src/main/java/org/thoughtcrime/securesms/messagerequests/MessageRequestRepository.java b/app/src/main/java/org/thoughtcrime/securesms/messagerequests/MessageRequestRepository.java index 4f98cc6414..40a1482020 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messagerequests/MessageRequestRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messagerequests/MessageRequestRepository.java @@ -116,7 +116,7 @@ public final class MessageRequestRepository { return new MessageRequestState(MessageRequestState.State.GROUP_V2_INVITE, reportedAsSpam); } default: { - if (RecipientUtil.isMessageRequestAccepted(context, threadId)) { + if (RecipientUtil.isMessageRequestAccepted(threadId)) { return MessageRequestState.NONE; } else { boolean reportedAsSpam = reportedAsSpam(threadId); @@ -131,7 +131,7 @@ public final class MessageRequestRepository { return new MessageRequestState(MessageRequestState.State.LEGACY_INDIVIDUAL); } } else if (recipient.isPushV1Group()) { - if (RecipientUtil.isMessageRequestAccepted(context, threadId)) { + if (RecipientUtil.isMessageRequestAccepted(threadId)) { return MessageRequestState.DEPRECATED_V1; } else if (!recipient.isActiveGroup()) { return MessageRequestState.NONE; @@ -139,7 +139,7 @@ public final class MessageRequestRepository { return MessageRequestState.DEPRECATED_V1; } } else { - if (RecipientUtil.isMessageRequestAccepted(context, threadId)) { + if (RecipientUtil.isMessageRequestAccepted(threadId)) { return MessageRequestState.NONE; } else { Recipient.HiddenState hiddenState = RecipientUtil.getRecipientHiddenState(threadId); 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 75a271b146..2cdc08cac9 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 @@ -120,7 +120,7 @@ sealed class NotificationBuilder(protected val context: Context) { } fun addReplyActions(conversation: NotificationConversation) { - if (privacy.isDisplayMessage && isNotLocked && !conversation.recipient.isPushV1Group && RecipientUtil.isMessageRequestAccepted(context, conversation.recipient)) { + if (privacy.isDisplayMessage && isNotLocked && !conversation.recipient.isPushV1Group && RecipientUtil.isMessageRequestAccepted(conversation.recipient)) { if (conversation.recipient.isPushV2Group) { val group: Optional = SignalDatabase.groups.getGroup(conversation.recipient.requireGroupId()) if (group.isPresent && group.get().isAnnouncementGroup && !group.get().isAdmin(Recipient.self())) { 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 e117822101..4ac173ecf7 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 @@ -139,7 +139,7 @@ sealed class NotificationItem(val threadRecipient: Recipient, protected val reco fun getPrimaryText(context: Context): CharSequence { return if (SignalStore.settings.messageNotificationsPrivacy.isDisplayMessage) { - if (RecipientUtil.isMessageRequestAccepted(context, thread.threadId)) { + if (RecipientUtil.isMessageRequestAccepted(thread.threadId)) { getPrimaryTextActual(context) } else { SpanUtil.italic(context.getString(R.string.SingleRecipientNotificationBuilder_message_request)) diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientUtil.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientUtil.java index 8aa7ba921d..81ae8e357f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientUtil.java @@ -214,10 +214,10 @@ public class RecipientUtil { private static void insertBlockedUpdate(@NonNull Recipient recipient, long threadId) { try { SignalDatabase.messages().insertMessageOutbox( - OutgoingMessage.blockedMessage(recipient, System.currentTimeMillis(), TimeUnit.SECONDS.toMillis(recipient.getExpiresInSeconds())), - threadId, - false, - null + OutgoingMessage.blockedMessage(recipient, System.currentTimeMillis(), TimeUnit.SECONDS.toMillis(recipient.getExpiresInSeconds())), + threadId, + false, + null ); } catch (MmsException e) { Log.w(TAG, "Unable to insert blocked message", e); @@ -227,10 +227,10 @@ public class RecipientUtil { private static void insertUnblockedUpdate(@NonNull Recipient recipient, long threadId) { try { SignalDatabase.messages().insertMessageOutbox( - OutgoingMessage.unblockedMessage(recipient, System.currentTimeMillis(), TimeUnit.SECONDS.toMillis(recipient.getExpiresInSeconds())), - threadId, - false, - null + OutgoingMessage.unblockedMessage(recipient, System.currentTimeMillis(), TimeUnit.SECONDS.toMillis(recipient.getExpiresInSeconds())), + threadId, + false, + null ); } catch (MmsException e) { Log.w(TAG, "Unable to insert unblocked message", e); @@ -277,7 +277,7 @@ public class RecipientUtil { * also be the case that the thread in question is for a system contact or something of the like. */ @WorkerThread - public static boolean isMessageRequestAccepted(@NonNull Context context, long threadId) { + public static boolean isMessageRequestAccepted(long threadId) { if (threadId < 0) { return true; } @@ -293,10 +293,10 @@ public class RecipientUtil { } /** - * See {@link #isMessageRequestAccepted(Context, long)}. + * See {@link #isMessageRequestAccepted(long)}. */ @WorkerThread - public static boolean isMessageRequestAccepted(@NonNull Context context, @Nullable Recipient threadRecipient) { + public static boolean isMessageRequestAccepted(@Nullable Recipient threadRecipient) { if (threadRecipient == null) { return true; } @@ -306,7 +306,7 @@ public class RecipientUtil { } /** - * Like {@link #isMessageRequestAccepted(Context, long)} but with fewer checks around messages so it + * Like {@link #isMessageRequestAccepted(long)} but with fewer checks around messages so it * is more likely to return false. */ @WorkerThread @@ -334,10 +334,10 @@ public class RecipientUtil { } public static boolean isLegacyProfileSharingAccepted(@NonNull Recipient threadRecipient) { - return threadRecipient.isSelf() || + return threadRecipient.isSelf() || threadRecipient.isProfileSharing() || - threadRecipient.isSystemContact() || - !threadRecipient.isRegistered() || + threadRecipient.isSystemContact() || + !threadRecipient.isRegistered() || threadRecipient.isHidden(); } @@ -375,8 +375,8 @@ public class RecipientUtil { } if (threadId == -1 || SignalDatabase.messages().canSetUniversalTimer(threadId)) { - int expireTimerVersion = SignalDatabase.recipients().setExpireMessagesAndIncrementVersion(recipient.getId(), defaultTimer); - OutgoingMessage outgoingMessage = OutgoingMessage.expirationUpdateMessage(recipient, System.currentTimeMillis(), defaultTimer * 1000L, expireTimerVersion); + int expireTimerVersion = SignalDatabase.recipients().setExpireMessagesAndIncrementVersion(recipient.getId(), defaultTimer); + OutgoingMessage outgoingMessage = OutgoingMessage.expirationUpdateMessage(recipient, System.currentTimeMillis(), defaultTimer * 1000L, expireTimerVersion); MessageSender.send(context, outgoingMessage, SignalDatabase.threads().getOrCreateThreadIdFor(recipient), MessageSender.SendType.SIGNAL, null, null); return expireTimerVersion; } @@ -408,11 +408,6 @@ public class RecipientUtil { return threadId != null && SignalDatabase.messages().getOutgoingSecureMessageCount(threadId) != 0; } - public static boolean isSmsOnly(long threadId, @NonNull Recipient threadRecipient) { - return !threadRecipient.isRegistered() || - noSecureMessagesAndNoCallsInThread(threadId); - } - @WorkerThread private static boolean noSecureMessagesAndNoCallsInThread(@Nullable Long threadId) { if (threadId == null) { diff --git a/app/src/test/java/org/thoughtcrime/securesms/recipients/RecipientUtilTest.kt b/app/src/test/java/org/thoughtcrime/securesms/recipients/RecipientUtilTest.kt index 7aba0ca8fb..32b17a21c0 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/recipients/RecipientUtilTest.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/recipients/RecipientUtilTest.kt @@ -1,6 +1,5 @@ package org.thoughtcrime.securesms.recipients -import android.content.Context import io.mockk.every import io.mockk.mockk import io.mockk.mockkObject @@ -18,7 +17,6 @@ import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.database.ThreadTable class RecipientUtilTest { - private val context = mockk() private val recipient = mockk(relaxed = true) private val mockThreadTable = mockk(relaxed = true) private val mockMessageTable = mockk() @@ -27,7 +25,7 @@ class RecipientUtilTest { @Before fun setUp() { mockkObject(SignalDatabase.Companion) - every { SignalDatabase.Companion.instance } returns mockk { + every { SignalDatabase.instance } returns mockk { every { threadTable } returns mockThreadTable every { messageTable } returns mockMessageTable every { recipientTable } returns mockRecipientTable @@ -45,7 +43,7 @@ class RecipientUtilTest { @Test fun givenThreadIsNegativeOne_whenIsThreadMessageRequestAccepted_thenIExpectTrue() { // WHEN - val result = RecipientUtil.isMessageRequestAccepted(context, -1L) + val result = RecipientUtil.isMessageRequestAccepted(-1L) // THEN assertTrue(result) @@ -54,7 +52,7 @@ class RecipientUtilTest { @Test fun givenRecipientIsNullForThreadId_whenIsThreadMessageRequestAccepted_thenIExpectTrue() { // WHEN - val result = RecipientUtil.isMessageRequestAccepted(context, 1L) + val result = RecipientUtil.isMessageRequestAccepted(1L) // THEN assertTrue(result) @@ -67,7 +65,7 @@ class RecipientUtilTest { every { mockMessageTable.getOutgoingSecureMessageCount(1L) } returns 5 // WHEN - val result = RecipientUtil.isMessageRequestAccepted(context, 1L) + val result = RecipientUtil.isMessageRequestAccepted(1L) // THEN assertTrue(result) @@ -81,7 +79,7 @@ class RecipientUtilTest { every { mockMessageTable.getOutgoingSecureMessageCount(1L) } returns 0 // WHEN - val result = RecipientUtil.isMessageRequestAccepted(context, 1L) + val result = RecipientUtil.isMessageRequestAccepted(1L) // THEN assertTrue(result) @@ -95,7 +93,7 @@ class RecipientUtilTest { every { mockMessageTable.getOutgoingSecureMessageCount(1L) } returns 0 // WHEN - val result = RecipientUtil.isMessageRequestAccepted(context, 1L) + val result = RecipientUtil.isMessageRequestAccepted(1L) // THEN assertTrue(result) @@ -110,7 +108,7 @@ class RecipientUtilTest { every { mockMessageTable.getSecureMessageCount(1L) } returns 5 // WHEN - val result = RecipientUtil.isMessageRequestAccepted(context, 1L) + val result = RecipientUtil.isMessageRequestAccepted(1L) // THEN assertFalse(result) @@ -124,7 +122,7 @@ class RecipientUtilTest { every { mockMessageTable.getSecureMessageCount(1L) } returns 0 // WHEN - val result = RecipientUtil.isMessageRequestAccepted(context, 1L) + val result = RecipientUtil.isMessageRequestAccepted(1L) // THEN assertTrue(result) @@ -133,7 +131,7 @@ class RecipientUtilTest { @Test fun givenRecipientIsNull_whenIsRecipientMessageRequestAccepted_thenIExpectTrue() { // WHEN - val result = RecipientUtil.isMessageRequestAccepted(context, null) + val result = RecipientUtil.isMessageRequestAccepted(null) // THEN assertTrue(result) @@ -145,7 +143,7 @@ class RecipientUtilTest { every { mockMessageTable.getOutgoingSecureMessageCount(any()) } returns 1 // WHEN - val result = RecipientUtil.isMessageRequestAccepted(context, recipient) + val result = RecipientUtil.isMessageRequestAccepted(recipient) // THEN assertTrue(result) @@ -157,7 +155,7 @@ class RecipientUtilTest { every { recipient.isProfileSharing } returns true // WHEN - val result = RecipientUtil.isMessageRequestAccepted(context, recipient) + val result = RecipientUtil.isMessageRequestAccepted(recipient) // THEN assertTrue(result) @@ -169,7 +167,7 @@ class RecipientUtilTest { every { recipient.isSystemContact } returns true // WHEN - val result = RecipientUtil.isMessageRequestAccepted(context, recipient) + val result = RecipientUtil.isMessageRequestAccepted(recipient) // THEN assertTrue(result) @@ -183,7 +181,7 @@ class RecipientUtilTest { every { mockMessageTable.getSecureMessageCount(any()) } returns 5 // WHEN - val result = RecipientUtil.isMessageRequestAccepted(context, recipient) + val result = RecipientUtil.isMessageRequestAccepted(recipient) // THEN assertFalse(result) @@ -195,7 +193,7 @@ class RecipientUtilTest { every { mockMessageTable.getSecureMessageCount(any()) } returns 0 // WHEN - val result = RecipientUtil.isMessageRequestAccepted(context, recipient) + val result = RecipientUtil.isMessageRequestAccepted(recipient) // THEN assertTrue(result)