Fix bug where you could choose to add someone already in a group.

main
Greyson Parrelli 2023-02-22 16:08:39 -05:00
rodzic 691ab353da
commit 64d5cbce3d
3 zmienionych plików z 26 dodań i 7 usunięć

Wyświetl plik

@ -5,19 +5,21 @@ import android.view.View
import org.thoughtcrime.securesms.contacts.paged.ContactSearchAdapter
import org.thoughtcrime.securesms.contacts.paged.ContactSearchConfiguration
import org.thoughtcrime.securesms.contacts.paged.ContactSearchData
import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey
import org.thoughtcrime.securesms.util.adapter.mapping.LayoutFactory
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel
import org.thoughtcrime.securesms.util.adapter.mapping.MappingViewHolder
class ContactSelectionListAdapter(
context: Context,
fixedContacts: Set<ContactSearchKey>,
displayCheckBox: Boolean,
displaySmsTag: DisplaySmsTag,
displaySecondaryInformation: DisplaySecondaryInformation,
onClickCallbacks: OnContactSelectionClick,
longClickCallbacks: LongClickCallbacks,
storyContextMenuCallbacks: StoryContextMenuCallbacks
) : ContactSearchAdapter(context, emptySet(), displayCheckBox, displaySmsTag, displaySecondaryInformation, onClickCallbacks, longClickCallbacks, storyContextMenuCallbacks) {
) : ContactSearchAdapter(context, fixedContacts, displayCheckBox, displaySmsTag, displaySecondaryInformation, onClickCallbacks, longClickCallbacks, storyContextMenuCallbacks) {
init {
registerFactory(NewGroupModel::class.java, LayoutFactory({ NewGroupViewHolder(it, onClickCallbacks::onNewGroupClicked) }, R.layout.contact_selection_new_group_item))

Wyświetl plik

@ -84,6 +84,7 @@ import org.thoughtcrime.securesms.util.views.SimpleProgressDialog;
import java.io.IOException;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
@ -349,6 +350,7 @@ public final class ContactSelectionListFragment extends LoggingFragment
false,
(context, fixedContacts, displayCheckBox, displaySmsTag, displaySecondaryInformation, callbacks, longClickCallbacks, storyContextMenuCallbacks) -> new ContactSelectionListAdapter(
context,
fixedContacts,
displayCheckBox,
displaySmsTag,
displaySecondaryInformation,
@ -441,7 +443,7 @@ public final class ContactSelectionListFragment extends LoggingFragment
}
return currentSelection == null ? Collections.emptySet()
: Collections.unmodifiableSet(Stream.of(currentSelection).collect(Collectors.toSet()));
: Collections.unmodifiableSet(new HashSet<>(currentSelection));
}
public boolean isMulti() {

Wyświetl plik

@ -384,9 +384,18 @@ open class ContactSearchAdapter(
}
override fun bindCheckbox(model: RecipientModel) {
super.bindCheckbox(model)
if (fixedContacts.contains(model.knownRecipient.contactSearchKey)) {
checkbox.isChecked = true
}
checkbox.isEnabled = !fixedContacts.contains(model.knownRecipient.contactSearchKey)
}
override fun isEnabled(model: RecipientModel): Boolean {
return !fixedContacts.contains(model.knownRecipient.contactSearchKey)
}
override fun getHeaderLetter(): String? {
return headerLetter
}
@ -415,11 +424,12 @@ open class ContactSearchAdapter(
protected val smsTag: View = itemView.findViewById(R.id.sms_tag)
override fun bind(model: T) {
checkbox.visible = displayCheckBox
checkbox.isChecked = isSelected(model)
if (isEnabled(model)) {
itemView.setOnClickListener { onClick.onClicked(avatar, getData(model), isSelected(model)) }
bindLongPress(model)
}
itemView.setOnClickListener { onClick.onClicked(avatar, getData(model), isSelected(model)) }
bindLongPress(model)
bindCheckbox(model)
if (payload.isNotEmpty()) {
return
@ -434,7 +444,12 @@ open class ContactSearchAdapter(
bindSmsTagField(model)
}
protected open fun bindCheckbox(model: T) = Unit
protected open fun bindCheckbox(model: T) {
checkbox.visible = displayCheckBox
checkbox.isChecked = isSelected(model)
}
protected open fun isEnabled(model: T): Boolean = true
protected open fun bindAvatar(model: T) {
avatar.setAvatar(getRecipient(model))