Recipient bottom sheet.

This commit is contained in:
Alan Evans
2020-04-22 16:25:28 -03:00
committed by Greyson Parrelli
parent f6f6496c9c
commit 17c5b858b5
22 changed files with 747 additions and 29 deletions

View File

@@ -1,43 +1,45 @@
package org.thoughtcrime.securesms;
import android.content.Context;
import android.content.Intent;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.Lifecycle;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.GroupDatabase;
import org.thoughtcrime.securesms.groups.GroupId;
import org.thoughtcrime.securesms.groups.ui.GroupMemberEntry;
import org.thoughtcrime.securesms.groups.ui.GroupMemberListView;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientExporter;
import org.thoughtcrime.securesms.recipients.ui.bottomsheet.RecipientBottomSheetDialogFragment;
import org.thoughtcrime.securesms.util.concurrent.SimpleTask;
import java.util.ArrayList;
public final class GroupMembersDialog {
private final Context context;
private final Recipient groupRecipient;
private final Lifecycle lifecycle;
private final FragmentActivity fragmentActivity;
private final Recipient groupRecipient;
private final Lifecycle lifecycle;
public GroupMembersDialog(@NonNull Context context,
public GroupMembersDialog(@NonNull FragmentActivity activity,
@NonNull Recipient groupRecipient,
@NonNull Lifecycle lifecycle)
{
this.context = context;
this.groupRecipient = groupRecipient;
this.lifecycle = lifecycle;
this.fragmentActivity = activity;
this.groupRecipient = groupRecipient;
this.lifecycle = lifecycle;
}
public void display() {
SimpleTask.run(
lifecycle,
() -> DatabaseFactory.getGroupDatabase(context).getGroupMembers(groupRecipient.requireGroupId(), GroupDatabase.MemberSet.FULL_MEMBERS_INCLUDING_SELF),
() -> DatabaseFactory.getGroupDatabase(fragmentActivity).getGroupMembers(groupRecipient.requireGroupId(), GroupDatabase.MemberSet.FULL_MEMBERS_INCLUDING_SELF),
members -> {
AlertDialog dialog = new AlertDialog.Builder(context)
AlertDialog dialog = new AlertDialog.Builder(fragmentActivity)
.setTitle(R.string.ConversationActivity_group_members)
.setIconAttribute(R.attr.group_members_dialog_icon)
.setCancelable(true)
@@ -70,13 +72,18 @@ public final class GroupMembersDialog {
}
private void contactClick(@NonNull Recipient recipient) {
if (recipient.getContactUri() != null) {
Intent intent = new Intent(context, RecipientPreferenceActivity.class);
intent.putExtra(RecipientPreferenceActivity.RECIPIENT_ID, recipient.getId());
GroupId groupId = groupRecipient.requireGroupId();
context.startActivity(intent);
if (groupId.isV2()) {
RecipientBottomSheetDialogFragment.create(recipient.getId(), groupId)
.show(fragmentActivity.getSupportFragmentManager(), "BOTTOM");
} else if (recipient.getContactUri() != null) {
Intent intent = new Intent(fragmentActivity, RecipientPreferenceActivity.class);
intent.putExtra(RecipientPreferenceActivity.RECIPIENT_ID, recipient.getId());
fragmentActivity.startActivity(intent);
} else {
context.startActivity(RecipientExporter.export(recipient).asAddContactIntent());
fragmentActivity.startActivity(RecipientExporter.export(recipient).asAddContactIntent());
}
}
}