Use recipientId's in ContactSelectionListAdapter.

This commit is contained in:
Greyson Parrelli 2019-10-02 10:05:43 -04:00
parent d026498a8c
commit 89e075c56e
9 changed files with 35 additions and 32 deletions

View File

@ -25,6 +25,7 @@ import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.components.ContactFilterToolbar; import org.thoughtcrime.securesms.components.ContactFilterToolbar;
import org.thoughtcrime.securesms.contacts.ContactsCursorLoader.DisplayMode; import org.thoughtcrime.securesms.contacts.ContactsCursorLoader.DisplayMode;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.util.DirectoryHelper; import org.thoughtcrime.securesms.util.DirectoryHelper;
import org.thoughtcrime.securesms.util.DynamicLanguage; import org.thoughtcrime.securesms.util.DynamicLanguage;
import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme; import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme;
@ -113,10 +114,10 @@ public abstract class ContactSelectionActivity extends PassphraseRequiredActionB
} }
@Override @Override
public void onContactSelected(String number) {} public void onContactSelected(RecipientId recipientId) {}
@Override @Override
public void onContactDeselected(String number) {} public void onContactDeselected(RecipientId recipientId) {}
private static class RefreshDirectoryTask extends AsyncTask<Context, Void, Void> { private static class RefreshDirectoryTask extends AsyncTask<Context, Void, Void> {

View File

@ -50,6 +50,7 @@ import org.thoughtcrime.securesms.contacts.ContactsCursorLoader.DisplayMode;
import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.mms.GlideApp; import org.thoughtcrime.securesms.mms.GlideApp;
import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.permissions.Permissions;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.util.DirectoryHelper; import org.thoughtcrime.securesms.util.DirectoryHelper;
import org.thoughtcrime.securesms.util.StickyHeaderDecoration; import org.thoughtcrime.securesms.util.StickyHeaderDecoration;
import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.TextSecurePreferences;
@ -80,7 +81,7 @@ public final class ContactSelectionListFragment extends Fragment
public static final String RECENTS = "recents"; public static final String RECENTS = "recents";
private TextView emptyText; private TextView emptyText;
private Set<String> selectedContacts; private Set<RecipientId> selectedContacts;
private OnContactSelectedListener onContactSelectedListener; private OnContactSelectedListener onContactSelectedListener;
private SwipeRefreshLayout swipeRefresh; private SwipeRefreshLayout swipeRefresh;
private View showContactsLayout; private View showContactsLayout;
@ -161,8 +162,8 @@ public final class ContactSelectionListFragment extends Fragment
Permissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults); Permissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
} }
public @NonNull List<String> getSelectedContacts() { public @NonNull List<RecipientId> getSelectedContacts() {
List<String> selected = new LinkedList<>(); List<RecipientId> selected = new LinkedList<>();
if (selectedContacts != null) { if (selectedContacts != null) {
selected.addAll(selectedContacts); selected.addAll(selectedContacts);
} }
@ -323,14 +324,14 @@ public final class ContactSelectionListFragment extends Fragment
private class ListClickListener implements ContactSelectionListAdapter.ItemClickListener { private class ListClickListener implements ContactSelectionListAdapter.ItemClickListener {
@Override @Override
public void onItemClick(ContactSelectionListItem contact) { public void onItemClick(ContactSelectionListItem contact) {
if (!isMulti() || !selectedContacts.contains(contact.getNumber())) { if (!isMulti() || !selectedContacts.contains(contact.getRecipientId())) {
selectedContacts.add(contact.getNumber()); selectedContacts.add(contact.getRecipientId());
contact.setChecked(true); contact.setChecked(true);
if (onContactSelectedListener != null) onContactSelectedListener.onContactSelected(contact.getNumber()); if (onContactSelectedListener != null) onContactSelectedListener.onContactSelected(contact.getRecipientId());
} else { } else {
selectedContacts.remove(contact.getNumber()); selectedContacts.remove(contact.getRecipientId());
contact.setChecked(false); contact.setChecked(false);
if (onContactSelectedListener != null) onContactSelectedListener.onContactDeselected(contact.getNumber()); if (onContactSelectedListener != null) onContactSelectedListener.onContactDeselected(contact.getRecipientId());
} }
} }
} }
@ -344,8 +345,8 @@ public final class ContactSelectionListFragment extends Fragment
} }
public interface OnContactSelectedListener { public interface OnContactSelectedListener {
void onContactSelected(String number); void onContactSelected(RecipientId recipientId);
void onContactDeselected(String number); void onContactDeselected(RecipientId recipientId);
} }
public interface InviteCallback { public interface InviteCallback {

View File

@ -284,10 +284,10 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity
switch (reqCode) { switch (reqCode) {
case PICK_CONTACT: case PICK_CONTACT:
List<String> selected = data.getStringArrayListExtra("contacts"); List<RecipientId> selected = data.getParcelableArrayListExtra("contacts");
for (String contact : selected) { for (RecipientId id : selected) {
Recipient recipient = Recipient.external(this, contact); Recipient recipient = Recipient.resolved(id);
addSelectedContacts(recipient); addSelectedContacts(recipient);
} }
break; break;

View File

@ -29,6 +29,7 @@ import org.thoughtcrime.securesms.components.ContactFilterToolbar.OnFilterChange
import org.thoughtcrime.securesms.contacts.ContactsCursorLoader.DisplayMode; import org.thoughtcrime.securesms.contacts.ContactsCursorLoader.DisplayMode;
import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.sms.MessageSender; import org.thoughtcrime.securesms.sms.MessageSender;
import org.thoughtcrime.securesms.sms.OutgoingTextMessage; import org.thoughtcrime.securesms.sms.OutgoingTextMessage;
import org.thoughtcrime.securesms.util.ViewUtil; import org.thoughtcrime.securesms.util.ViewUtil;
@ -97,12 +98,12 @@ public class InviteActivity extends PassphraseRequiredActionBarActivity implemen
} }
@Override @Override
public void onContactSelected(String number) { public void onContactSelected(RecipientId recipientId) {
updateSmsButtonText(); updateSmsButtonText();
} }
@Override @Override
public void onContactDeselected(String number) { public void onContactDeselected(RecipientId recipientId) {
updateSmsButtonText(); updateSmsButtonText();
} }

View File

@ -27,6 +27,7 @@ import org.thoughtcrime.securesms.conversation.ConversationActivity;
import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.ThreadDatabase; import org.thoughtcrime.securesms.database.ThreadDatabase;
import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
/** /**
* Activity container for starting a new conversation. * Activity container for starting a new conversation.
@ -49,8 +50,8 @@ public class NewConversationActivity extends ContactSelectionActivity
} }
@Override @Override
public void onContactSelected(String number) { public void onContactSelected(RecipientId recipientId) {
Recipient recipient = Recipient.external(this, number); Recipient recipient = Recipient.resolved(recipientId);
Intent intent = new Intent(this, ConversationActivity.class); Intent intent = new Intent(this, ConversationActivity.class);
intent.putExtra(ConversationActivity.RECIPIENT_EXTRA, recipient.getId()); intent.putExtra(ConversationActivity.RECIPIENT_EXTRA, recipient.getId());

View File

@ -19,6 +19,8 @@ package org.thoughtcrime.securesms;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import org.thoughtcrime.securesms.recipients.RecipientId;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -41,11 +43,9 @@ public class PushContactSelectionActivity extends ContactSelectionActivity {
getToolbar().setNavigationIcon(R.drawable.ic_check_white_24dp); getToolbar().setNavigationIcon(R.drawable.ic_check_white_24dp);
getToolbar().setNavigationOnClickListener(v -> { getToolbar().setNavigationOnClickListener(v -> {
Intent resultIntent = getIntent(); Intent resultIntent = getIntent();
List<String> selectedContacts = contactsFragment.getSelectedContacts(); List<RecipientId> selectedContacts = contactsFragment.getSelectedContacts();
if (selectedContacts != null) { resultIntent.putParcelableArrayListExtra("contacts", new ArrayList<>(selectedContacts));
resultIntent.putStringArrayListExtra("contacts", new ArrayList<>(selectedContacts));
}
setResult(RESULT_OK, resultIntent); setResult(RESULT_OK, resultIntent);
finish(); finish();

View File

@ -272,9 +272,9 @@ public class ShareActivity extends PassphraseRequiredActionBarActivity
} }
@Override @Override
public void onContactSelected(String number) { public void onContactSelected(RecipientId recipientId) {
SimpleTask.run(this.getLifecycle(), () -> { SimpleTask.run(this.getLifecycle(), () -> {
Recipient recipient = Recipient.external(this, number); Recipient recipient = Recipient.resolved(recipientId);
long existingThread = DatabaseFactory.getThreadDatabase(this).getThreadIdIfExistsFor(recipient); long existingThread = DatabaseFactory.getThreadDatabase(this).getThreadIdIfExistsFor(recipient);
return new Pair<>(existingThread, recipient); return new Pair<>(existingThread, recipient);
}, result -> { }, result -> {
@ -284,8 +284,7 @@ public class ShareActivity extends PassphraseRequiredActionBarActivity
} }
@Override @Override
public void onContactDeselected(String number) { public void onContactDeselected(RecipientId recipientId) {
} }
@Override @Override

View File

@ -70,7 +70,7 @@ public class ContactSelectionListAdapter extends CursorRecyclerViewAdapter<ViewH
private final ItemClickListener clickListener; private final ItemClickListener clickListener;
private final GlideRequests glideRequests; private final GlideRequests glideRequests;
private final Set<String> selectedContacts = new HashSet<>(); private final Set<RecipientId> selectedContacts = new HashSet<>();
public abstract static class ViewHolder extends RecyclerView.ViewHolder { public abstract static class ViewHolder extends RecyclerView.ViewHolder {
@ -189,7 +189,7 @@ public class ContactSelectionListAdapter extends CursorRecyclerViewAdapter<ViewH
viewHolder.unbind(glideRequests); viewHolder.unbind(glideRequests);
viewHolder.bind(glideRequests, id, contactType, name, number, labelText, color, multiSelect); viewHolder.bind(glideRequests, id, contactType, name, number, labelText, color, multiSelect);
viewHolder.setChecked(selectedContacts.contains(number)); viewHolder.setChecked(selectedContacts.contains(id));
} }
@Override @Override
@ -222,7 +222,7 @@ public class ContactSelectionListAdapter extends CursorRecyclerViewAdapter<ViewH
return getHeaderString(position); return getHeaderString(position);
} }
public Set<String> getSelectedContacts() { public Set<RecipientId> getSelectedContacts() {
return selectedContacts; return selectedContacts;
} }

View File

@ -129,8 +129,8 @@ public class ContactSelectionListItem extends LinearLayout implements RecipientF
} }
} }
public String getNumber() { public @Nullable RecipientId getRecipientId() {
return number; return recipient != null ? recipient.getId() : null;
} }
@Override @Override