diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/permissions/PermissionsSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/permissions/PermissionsSettingsFragment.kt index a9dcced7ce..673cc24155 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/permissions/PermissionsSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/permissions/PermissionsSettingsFragment.kt @@ -73,19 +73,17 @@ class PermissionsSettingsFragment : DSLSettingsFragment( } ) - if (state.announcementGroupPermissionEnabled) { - radioListPref( - title = DSLSettingsText.from(R.string.PermissionsSettingsFragment__send_messages), - isEnabled = state.selfCanEditSettings, - listItems = permissionsOptions, - dialogTitle = DSLSettingsText.from(R.string.PermissionsSettingsFragment__who_can_send_messages), - selected = getSelected(!state.announcementGroup), - confirmAction = true, - onSelected = { - viewModel.setAnnouncementGroup(it == 0) - } - ) - } + radioListPref( + title = DSLSettingsText.from(R.string.PermissionsSettingsFragment__send_messages), + isEnabled = state.selfCanEditSettings, + listItems = permissionsOptions, + dialogTitle = DSLSettingsText.from(R.string.PermissionsSettingsFragment__who_can_send_messages), + selected = getSelected(!state.announcementGroup), + confirmAction = true, + onSelected = { + viewModel.setAnnouncementGroup(it == 0) + } + ) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/permissions/PermissionsSettingsState.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/permissions/PermissionsSettingsState.kt index 2edd68f013..ab062a6ced 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/permissions/PermissionsSettingsState.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/permissions/PermissionsSettingsState.kt @@ -4,6 +4,5 @@ data class PermissionsSettingsState( val selfCanEditSettings: Boolean = false, val nonAdminCanAddMembers: Boolean = false, val nonAdminCanEditGroupInfo: Boolean = false, - val announcementGroupPermissionEnabled: Boolean = false, val announcementGroup: Boolean = false ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/permissions/PermissionsSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/permissions/PermissionsSettingsViewModel.kt index 283cc7751c..a271cc8c20 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/permissions/PermissionsSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/permissions/PermissionsSettingsViewModel.kt @@ -6,7 +6,6 @@ import androidx.lifecycle.ViewModelProvider import org.thoughtcrime.securesms.groups.GroupAccessControl import org.thoughtcrime.securesms.groups.GroupId import org.thoughtcrime.securesms.groups.LiveGroup -import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.util.SingleLiveEvent import org.thoughtcrime.securesms.util.livedata.Store @@ -36,15 +35,7 @@ class PermissionsSettingsViewModel( } store.update(liveGroup.isAnnouncementGroup) { isAnnouncementGroup, state -> - state.copy( - announcementGroup = isAnnouncementGroup, - announcementGroupPermissionEnabled = state.announcementGroupPermissionEnabled || isAnnouncementGroup - ) - } - - store.update(liveGroup.groupRecipient) { groupRecipient, state -> - val allHaveCapability = groupRecipient.participants.map { it.announcementGroupCapability }.all { it == Recipient.Capability.SUPPORTED } - state.copy(announcementGroupPermissionEnabled = allHaveCapability || state.announcementGroup) + state.copy(announcementGroup = isAnnouncementGroup) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/v2/GroupManagementRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/groups/v2/GroupManagementRepository.kt index ce33ee2535..614dcf476a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/v2/GroupManagementRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/v2/GroupManagementRepository.kt @@ -7,18 +7,14 @@ import io.reactivex.rxjava3.schedulers.Schedulers import org.signal.core.util.concurrent.SignalExecutors import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.contacts.sync.ContactDiscovery -import org.thoughtcrime.securesms.database.GroupDatabase -import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.dependencies.ApplicationDependencies import org.thoughtcrime.securesms.groups.GroupChangeException import org.thoughtcrime.securesms.groups.GroupId import org.thoughtcrime.securesms.groups.GroupManager import org.thoughtcrime.securesms.groups.ui.GroupChangeFailureReason -import org.thoughtcrime.securesms.jobs.RetrieveProfileJob import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.RecipientId import java.io.IOException -import java.util.concurrent.TimeUnit private val TAG: String = Log.tag(GroupManagementRepository::class.java) @@ -38,7 +34,6 @@ class GroupManagementRepository @JvmOverloads constructor(private val context: C private fun addMembers(potentialGroupId: GroupId?, potentialGroupRecipient: Recipient?, selected: List, consumer: Consumer) { SignalExecutors.UNBOUNDED.execute { val groupId: GroupId.Push = potentialGroupId?.requirePush() ?: potentialGroupRecipient!!.requireGroupId().requirePush() - val record: GroupDatabase.GroupRecord = SignalDatabase.groups.getGroup(groupId).get() val recipients = selected.map(Recipient::resolved) .filterNot { it.hasServiceId() && it.isRegistered } @@ -51,23 +46,6 @@ class GroupManagementRepository @JvmOverloads constructor(private val context: C consumer.accept(GroupAddMembersResult.Failure(GroupChangeFailureReason.NETWORK)) } - if (record.isAnnouncementGroup) { - val needsResolve = selected - .map { Recipient.resolved(it) } - .filter { it.announcementGroupCapability != Recipient.Capability.SUPPORTED && !it.isSelf } - .map { it.id } - .toSet() - - ApplicationDependencies.getJobManager().runSynchronously(RetrieveProfileJob(needsResolve), TimeUnit.SECONDS.toMillis(10)) - - val updatedWithCapabilities = needsResolve.map { Recipient.resolved(it) } - - if (updatedWithCapabilities.any { it.announcementGroupCapability != Recipient.Capability.SUPPORTED }) { - consumer.accept(GroupAddMembersResult.Failure(GroupChangeFailureReason.NOT_ANNOUNCEMENT_CAPABLE)) - return@execute - } - } - consumer.accept( try { val toAdd = selected.filter { Recipient.resolved(it).isRegistered }