diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsFragment.kt
index 08e821e4f1..008b171a76 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsFragment.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsFragment.kt
@@ -861,17 +861,13 @@ class ConversationSettingsFragment :
)
if (RemoteConfig.sendMemberLabels) {
- val canSetMemberLabel = groupState.canSetOwnMemberLabel && !state.isDeprecatedOrUnregistered
clickPref(
title = DSLSettingsText.from(R.string.ConversationSettingsFragment__group_member_label),
icon = DSLSettingsIcon.from(R.drawable.symbol_tag_24),
- isEnabled = canSetMemberLabel,
+ isEnabled = groupState.canSetOwnMemberLabel && !state.isDeprecatedOrUnregistered,
onClick = {
val action = ConversationSettingsFragmentDirections.actionConversationSettingsFragmentToMemberLabelFragment(groupState.groupId)
navController.safeNavigate(action)
- },
- onDisabledClicked = {
- Snackbar.make(requireView(), R.string.GroupMemberLabel__error_no_edit_permission, Snackbar.LENGTH_SHORT).show()
}
)
}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsViewModel.kt
index cf38d44e21..07d00036bb 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsViewModel.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsViewModel.kt
@@ -522,8 +522,8 @@ sealed class ConversationSettingsViewModel(
}
}
- private fun loadCanSetMemberLabel(v2GroupId: GroupId.V2) = viewModelScope.launch(SignalDispatchers.IO) {
- val canSetLabel = MemberLabelRepository.instance.canSetLabel(v2GroupId, Recipient.self())
+ private fun loadCanSetMemberLabel(groupId: GroupId.V2) = viewModelScope.launch(SignalDispatchers.IO) {
+ val canSetLabel = MemberLabelRepository.instance.canSetLabel(groupId, Recipient.self())
store.update {
it.copy(
specificSettingsState = it.requireGroupSettingsState().copy(
diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt
index c069f49366..823dcbf2bb 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt
@@ -142,10 +142,10 @@ import org.thoughtcrime.securesms.revealable.ViewOnceUtil
import org.thoughtcrime.securesms.sms.GroupV2UpdateMessageUtil
import org.thoughtcrime.securesms.stories.Stories.isFeatureEnabled
import org.thoughtcrime.securesms.util.JsonUtils
-import org.thoughtcrime.securesms.util.SignalTrace
import org.thoughtcrime.securesms.util.MediaUtil
import org.thoughtcrime.securesms.util.MessageConstraintsUtil
import org.thoughtcrime.securesms.util.RemoteConfig
+import org.thoughtcrime.securesms.util.SignalTrace
import org.thoughtcrime.securesms.util.TextSecurePreferences
import org.thoughtcrime.securesms.util.isStory
import org.whispersystems.signalservice.internal.push.SyncMessage
diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt
index d9e080c5c2..608c196da9 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt
@@ -68,9 +68,9 @@ import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.recipients.RecipientUtil
import org.thoughtcrime.securesms.storage.StorageSyncHelper
import org.thoughtcrime.securesms.util.ConversationUtil
-import org.thoughtcrime.securesms.util.SignalTrace
import org.thoughtcrime.securesms.util.JsonUtils
import org.thoughtcrime.securesms.util.JsonUtils.SaneJSONObject
+import org.thoughtcrime.securesms.util.SignalTrace
import org.thoughtcrime.securesms.util.TextSecurePreferences
import org.thoughtcrime.securesms.util.isPoll
import org.thoughtcrime.securesms.util.isScheduled
diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelFragment.kt
index f9f427bb12..8f007e590f 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelFragment.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelFragment.kt
@@ -107,7 +107,6 @@ class MemberLabelFragment : ComposeFragment(), ReactWithAnyEmojiBottomSheetDialo
}
val networkErrorMessage = stringResource(R.string.GroupMemberLabel__error_cant_save_no_network)
- val noPermissionErrorMessage = stringResource(R.string.GroupMemberLabel__error_no_edit_permission)
LaunchedEffect(uiState.saveState) {
when (uiState.saveState) {
@@ -121,10 +120,7 @@ class MemberLabelFragment : ComposeFragment(), ReactWithAnyEmojiBottomSheetDialo
viewModel.onSaveStateConsumed()
}
- is SaveState.InsufficientRights -> {
- snackbarHostState.showSnackbar(noPermissionErrorMessage)
- viewModel.onSaveStateConsumed()
- }
+ is SaveState.InsufficientRights -> throw IllegalStateException("User does not have permission to set member label.")
is SaveState.InProgress, null -> Unit
}
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 072af073bd..fae853669e 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
@@ -94,12 +94,12 @@ class MemberLabelRepository private constructor(
}
/**
- * Checks whether the [Recipient] has permission to set their member label in the given group.
+ * Checks whether [recipient] has permission to set their member label in the given group.
*/
suspend fun canSetLabel(groupId: GroupId.V2, recipient: Recipient): Boolean = withContext(Dispatchers.IO) {
if (!RemoteConfig.sendMemberLabels) return@withContext false
val groupRecord = groupsTable.getGroup(groupId).orNull() ?: return@withContext false
- groupRecord.attributesAccessControl.allows(groupRecord.memberLevel(recipient))
+ groupRecord.memberLevel(recipient).isInGroup
}
/**
diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt b/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt
index 9a12e02ee5..ae5bae7ba2 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt
@@ -1252,7 +1252,7 @@ object RemoteConfig {
@JvmStatic
@get:JvmName("sendMemberLabels")
val sendMemberLabels: Boolean by remoteBoolean(
- key = "android.sendMemberLabels.2",
+ key = "android.sendMemberLabels.3",
defaultValue = false,
hotSwappable = true
)
diff --git a/app/src/main/res/values/light_colors.xml b/app/src/main/res/values/light_colors.xml
index 8c1a4cece0..7fb8c14c03 100644
--- a/app/src/main/res/values/light_colors.xml
+++ b/app/src/main/res/values/light_colors.xml
@@ -179,7 +179,7 @@
@color/signal_colorOnCustom
@color/signal_colorOnSurface
@color/signal_colorOnSurface_8
- @color/transparent_white_80
+ @color/signal_colorOnSurface_8
@color/transparent_white_36
@color/transparent_white_36
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 8e5b5af9bf..b589e9f926 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -9471,8 +9471,6 @@
Add a member label to describe yourself or your role in this group. Labels are only visible within this group.
Couldn\'t save label. Check your network and try again.
-
- Only admins can add member labels in this group.
Select emoji