Signal-Android/app/src/main/java/org/thoughtcrime/securesms/GroupMembersDialog.java

80 lines
2.9 KiB
Java
Raw Normal View History

2014-02-15 20:28:07 +01:00
package org.thoughtcrime.securesms;
import android.content.Context;
import android.content.Intent;
2020-03-03 23:34:55 +01:00
import androidx.annotation.NonNull;
2019-06-05 21:47:14 +02:00
import androidx.appcompat.app.AlertDialog;
2020-03-03 23:34:55 +01:00
import androidx.lifecycle.Lifecycle;
2014-02-15 20:28:07 +01:00
import org.thoughtcrime.securesms.database.DatabaseFactory;
2020-03-27 19:55:44 +01:00
import org.thoughtcrime.securesms.database.GroupDatabase;
2020-03-03 23:34:55 +01:00
import org.thoughtcrime.securesms.groups.ui.GroupMemberEntry;
import org.thoughtcrime.securesms.groups.ui.GroupMemberListView;
2014-02-15 20:28:07 +01:00
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientExporter;
2020-03-03 23:34:55 +01:00
import org.thoughtcrime.securesms.util.concurrent.SimpleTask;
2020-03-03 23:34:55 +01:00
import java.util.ArrayList;
2014-02-15 20:28:07 +01:00
2020-03-03 23:34:55 +01:00
public final class GroupMembersDialog {
2014-02-15 20:28:07 +01:00
2020-03-03 23:34:55 +01:00
private final Context context;
private final Recipient groupRecipient;
private final Lifecycle lifecycle;
2014-02-15 20:28:07 +01:00
2020-03-03 23:34:55 +01:00
public GroupMembersDialog(@NonNull Context context,
@NonNull Recipient groupRecipient,
@NonNull Lifecycle lifecycle)
{
this.context = context;
this.groupRecipient = groupRecipient;
this.lifecycle = lifecycle;
2014-02-15 20:28:07 +01:00
}
public void display() {
2020-03-03 23:34:55 +01:00
SimpleTask.run(
lifecycle,
2020-03-27 19:55:44 +01:00
() -> DatabaseFactory.getGroupDatabase(context).getGroupMembers(groupRecipient.requireGroupId(), GroupDatabase.MemberSet.FULL_MEMBERS_INCLUDING_SELF),
2020-03-03 23:34:55 +01:00
members -> {
AlertDialog dialog = new AlertDialog.Builder(context)
.setTitle(R.string.ConversationActivity_group_members)
.setIconAttribute(R.attr.group_members_dialog_icon)
.setCancelable(true)
.setView(R.layout.dialog_group_members)
.setPositiveButton(android.R.string.ok, null)
.show();
GroupMemberListView memberListView = dialog.findViewById(R.id.list_members);
ArrayList<GroupMemberEntry.FullMember> pendingMembers = new ArrayList<>(members.size());
for (Recipient member : members) {
GroupMemberEntry.FullMember entry = new GroupMemberEntry.FullMember(member);
entry.setOnClick(() -> contactClick(member));
if (member.isLocalNumber()) {
pendingMembers.add(0, entry);
} else {
pendingMembers.add(entry);
}
}
2020-03-03 23:34:55 +01:00
//noinspection ConstantConditions
memberListView.setMembers(pendingMembers);
}
2020-03-03 23:34:55 +01:00
);
}
2020-03-03 23:34:55 +01:00
private void contactClick(@NonNull Recipient recipient) {
if (recipient.getContactUri() != null) {
Intent intent = new Intent(context, RecipientPreferenceActivity.class);
intent.putExtra(RecipientPreferenceActivity.RECIPIENT_ID, recipient.getId());
2020-03-03 23:34:55 +01:00
context.startActivity(intent);
} else {
context.startActivity(RecipientExporter.export(recipient).asAddContactIntent());
}
}
2014-02-15 20:28:07 +01:00
}