mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
* Initialize the ContactSelectionListFragment with the selection from GroupCreateActivity, tackles #47.
* If contact is unselected in ContactSelectionListFragment, which was previously in the group, delete it from GroupCreateActivity, also.
This commit is contained in:
@@ -61,6 +61,7 @@ import org.thoughtcrime.securesms.util.StickyHeaderDecoration;
|
||||
import org.thoughtcrime.securesms.util.Util;
|
||||
import org.thoughtcrime.securesms.util.ViewUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@@ -83,6 +84,7 @@ public class ContactSelectionListFragment extends Fragment
|
||||
public static final String RECENTS = "recents";
|
||||
public static final String SELECT_VERIFIED_EXTRA = "select_verified";
|
||||
public static final String FROM_SHARE_ACTIVITY_EXTRA = "from_share_activity";
|
||||
public static final String PRESELECTED_CONTACTS = "preselected_contacts";
|
||||
|
||||
private ApplicationDcContext dcContext;
|
||||
|
||||
@@ -243,6 +245,10 @@ public class ContactSelectionListFragment extends Fragment
|
||||
isMulti(),
|
||||
true);
|
||||
selectedContacts = adapter.getSelectedContacts();
|
||||
ArrayList<String> preselectedContacts = getActivity().getIntent().getStringArrayListExtra(PRESELECTED_CONTACTS);
|
||||
if(preselectedContacts!=null) {
|
||||
selectedContacts.addAll(preselectedContacts);
|
||||
}
|
||||
recyclerView.setAdapter(adapter);
|
||||
recyclerView.addItemDecoration(new StickyHeaderDecoration(adapter, true, true));
|
||||
}
|
||||
|
||||
@@ -62,6 +62,7 @@ import org.thoughtcrime.securesms.util.task.ProgressDialogAsyncTask;
|
||||
import org.thoughtcrime.securesms.util.guava.Optional;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@@ -151,6 +152,7 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity
|
||||
}
|
||||
|
||||
private void addSelectedContacts(@NonNull Recipient... recipients) {
|
||||
getAdapter().clear();
|
||||
new AddMembersTask(this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, recipients);
|
||||
}
|
||||
|
||||
@@ -421,6 +423,17 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity
|
||||
public void onClick(View v) {
|
||||
Intent intent = new Intent(GroupCreateActivity.this, ContactMultiSelectionActivity.class);
|
||||
intent.putExtra(ContactSelectionListFragment.SELECT_VERIFIED_EXTRA, verified);
|
||||
if(editGroupChatId!=null) {
|
||||
Recipient recipient = GroupCreateActivity.this.dcContext.getRecipient(ApplicationDcContext.RECIPIENT_TYPE_CHAT, editGroupChatId);
|
||||
List<Recipient> participants = recipient.getParticipants();
|
||||
ArrayList<String> preselectedContacts = new ArrayList<>();
|
||||
for (Recipient p : participants) {
|
||||
if(p.getAddress().isDcContact()) {
|
||||
preselectedContacts.add(dcContext.getContact(p.getAddress().getDcContactId()).getAddr());
|
||||
}
|
||||
}
|
||||
intent.putExtra(ContactSelectionListFragment.PRESELECTED_CONTACTS, preselectedContacts);
|
||||
}
|
||||
startActivityForResult(intent, PICK_CONTACT);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,6 +67,11 @@ public class SelectedRecipientsAdapter extends BaseAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
recipients.clear();
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public Set<Recipient> getRecipients() {
|
||||
final Set<Recipient> recipientSet = new HashSet<>(recipients.size());
|
||||
for (RecipientWrapper wrapper : recipients) {
|
||||
|
||||
Reference in New Issue
Block a user