Remove announcement group capability checks.
This commit is contained in:
parent
1fad4d4f65
commit
9599d3a0b6
4 changed files with 12 additions and 46 deletions
|
@ -73,19 +73,17 @@ 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,
|
listItems = permissionsOptions,
|
||||||
listItems = permissionsOptions,
|
dialogTitle = DSLSettingsText.from(R.string.PermissionsSettingsFragment__who_can_send_messages),
|
||||||
dialogTitle = DSLSettingsText.from(R.string.PermissionsSettingsFragment__who_can_send_messages),
|
selected = getSelected(!state.announcementGroup),
|
||||||
selected = getSelected(!state.announcementGroup),
|
confirmAction = true,
|
||||||
confirmAction = true,
|
onSelected = {
|
||||||
onSelected = {
|
viewModel.setAnnouncementGroup(it == 0)
|
||||||
viewModel.setAnnouncementGroup(it == 0)
|
}
|
||||||
}
|
)
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
@ -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)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 }
|
||||||
|
|
Loading…
Add table
Reference in a new issue