Remove announcement group capability checks.

This commit is contained in:
Cody Henthorne 2022-04-29 16:47:39 -04:00 committed by Greyson Parrelli
parent 1fad4d4f65
commit 9599d3a0b6
4 changed files with 12 additions and 46 deletions

View file

@ -73,7 +73,6 @@ class PermissionsSettingsFragment : DSLSettingsFragment(
} }
) )
if (state.announcementGroupPermissionEnabled) {
radioListPref( radioListPref(
title = DSLSettingsText.from(R.string.PermissionsSettingsFragment__send_messages), title = DSLSettingsText.from(R.string.PermissionsSettingsFragment__send_messages),
isEnabled = state.selfCanEditSettings, isEnabled = state.selfCanEditSettings,
@ -87,7 +86,6 @@ class PermissionsSettingsFragment : DSLSettingsFragment(
) )
} }
} }
}
@StringRes @StringRes
private fun getSelected(isNonAdminAllowed: Boolean): Int { private fun getSelected(isNonAdminAllowed: Boolean): Int {

View file

@ -4,6 +4,5 @@ data class PermissionsSettingsState(
val selfCanEditSettings: Boolean = false, val selfCanEditSettings: Boolean = false,
val nonAdminCanAddMembers: Boolean = false, val nonAdminCanAddMembers: Boolean = false,
val nonAdminCanEditGroupInfo: Boolean = false, val nonAdminCanEditGroupInfo: Boolean = false,
val announcementGroupPermissionEnabled: Boolean = false,
val announcementGroup: Boolean = false val announcementGroup: Boolean = false
) )

View file

@ -6,7 +6,6 @@ import androidx.lifecycle.ViewModelProvider
import org.thoughtcrime.securesms.groups.GroupAccessControl import org.thoughtcrime.securesms.groups.GroupAccessControl
import org.thoughtcrime.securesms.groups.GroupId import org.thoughtcrime.securesms.groups.GroupId
import org.thoughtcrime.securesms.groups.LiveGroup import org.thoughtcrime.securesms.groups.LiveGroup
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.util.SingleLiveEvent import org.thoughtcrime.securesms.util.SingleLiveEvent
import org.thoughtcrime.securesms.util.livedata.Store import org.thoughtcrime.securesms.util.livedata.Store
@ -36,15 +35,7 @@ class PermissionsSettingsViewModel(
} }
store.update(liveGroup.isAnnouncementGroup) { isAnnouncementGroup, state -> store.update(liveGroup.isAnnouncementGroup) { isAnnouncementGroup, state ->
state.copy( state.copy(announcementGroup = isAnnouncementGroup)
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)
} }
} }

View file

@ -7,18 +7,14 @@ import io.reactivex.rxjava3.schedulers.Schedulers
import org.signal.core.util.concurrent.SignalExecutors import org.signal.core.util.concurrent.SignalExecutors
import org.signal.core.util.logging.Log import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.contacts.sync.ContactDiscovery 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.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.groups.GroupChangeException import org.thoughtcrime.securesms.groups.GroupChangeException
import org.thoughtcrime.securesms.groups.GroupId import org.thoughtcrime.securesms.groups.GroupId
import org.thoughtcrime.securesms.groups.GroupManager import org.thoughtcrime.securesms.groups.GroupManager
import org.thoughtcrime.securesms.groups.ui.GroupChangeFailureReason import org.thoughtcrime.securesms.groups.ui.GroupChangeFailureReason
import org.thoughtcrime.securesms.jobs.RetrieveProfileJob
import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.recipients.RecipientId
import java.io.IOException import java.io.IOException
import java.util.concurrent.TimeUnit
private val TAG: String = Log.tag(GroupManagementRepository::class.java) 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<RecipientId>, consumer: Consumer<GroupAddMembersResult>) { private fun addMembers(potentialGroupId: GroupId?, potentialGroupRecipient: Recipient?, selected: List<RecipientId>, consumer: Consumer<GroupAddMembersResult>) {
SignalExecutors.UNBOUNDED.execute { SignalExecutors.UNBOUNDED.execute {
val groupId: GroupId.Push = potentialGroupId?.requirePush() ?: potentialGroupRecipient!!.requireGroupId().requirePush() val groupId: GroupId.Push = potentialGroupId?.requirePush() ?: potentialGroupRecipient!!.requireGroupId().requirePush()
val record: GroupDatabase.GroupRecord = SignalDatabase.groups.getGroup(groupId).get()
val recipients = selected.map(Recipient::resolved) val recipients = selected.map(Recipient::resolved)
.filterNot { it.hasServiceId() && it.isRegistered } .filterNot { it.hasServiceId() && it.isRegistered }
@ -51,23 +46,6 @@ class GroupManagementRepository @JvmOverloads constructor(private val context: C
consumer.accept(GroupAddMembersResult.Failure(GroupChangeFailureReason.NETWORK)) 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( consumer.accept(
try { try {
val toAdd = selected.filter { Recipient.resolved(it).isRegistered } val toAdd = selected.filter { Recipient.resolved(it).isRegistered }