diff --git a/src/org/thoughtcrime/securesms/ConversationActivity.java b/src/org/thoughtcrime/securesms/ConversationActivity.java index 87f33cbf84..8323bebf8a 100644 --- a/src/org/thoughtcrime/securesms/ConversationActivity.java +++ b/src/org/thoughtcrime/securesms/ConversationActivity.java @@ -17,6 +17,7 @@ package org.thoughtcrime.securesms; import android.app.AlertDialog; +import android.app.ProgressDialog; import android.content.ActivityNotFoundException; import android.content.BroadcastReceiver; import android.content.Context; @@ -84,6 +85,7 @@ import org.thoughtcrime.securesms.util.CharacterCalculator; import org.thoughtcrime.securesms.util.DynamicLanguage; import org.thoughtcrime.securesms.util.DynamicTheme; import org.thoughtcrime.securesms.util.EncryptedCharacterCalculator; +import org.thoughtcrime.securesms.util.GroupUtil; import org.thoughtcrime.securesms.util.MemoryCleaner; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.whispersystems.textsecure.crypto.InvalidMessageException; @@ -427,19 +429,7 @@ public class ConversationActivity extends PassphraseRequiredSherlockFragmentActi } private void handleDisplayGroupRecipients() { - List recipientStrings = new LinkedList(); - - for (Recipient recipient : getRecipients().getRecipientsList()) { - recipientStrings.add(recipient.toShortString()); - } - - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle(R.string.ConversationActivity_group_conversation_recipients); - builder.setIcon(R.drawable.ic_menu_groups_holo_dark); - builder.setCancelable(true); - builder.setItems(recipientStrings.toArray(new String[]{}), null); - builder.setPositiveButton(android.R.string.ok, null); - builder.show(); + new GroupMembersDialog(this, getRecipients()).display(); } private void handleDeleteThread() { diff --git a/src/org/thoughtcrime/securesms/GroupMembersDialog.java b/src/org/thoughtcrime/securesms/GroupMembersDialog.java new file mode 100644 index 0000000000..818ec9f1dd --- /dev/null +++ b/src/org/thoughtcrime/securesms/GroupMembersDialog.java @@ -0,0 +1,72 @@ +package org.thoughtcrime.securesms; + +import android.app.AlertDialog; +import android.app.ProgressDialog; +import android.content.Context; +import android.os.AsyncTask; +import android.util.Log; + +import org.thoughtcrime.securesms.database.DatabaseFactory; +import org.thoughtcrime.securesms.recipients.Recipient; +import org.thoughtcrime.securesms.recipients.Recipients; +import org.thoughtcrime.securesms.util.GroupUtil; + +import java.io.IOException; +import java.util.LinkedList; +import java.util.List; + +public class GroupMembersDialog extends AsyncTask { + + private final Recipients recipients; + private final Context context; + + private ProgressDialog progress = null; + + public GroupMembersDialog(Context context, Recipients recipients) { + this.recipients = recipients; + this.context = context; + } + + @Override + public void onPreExecute() { + progress = ProgressDialog.show(context, "Members...", "Members...", true, false); + } + + @Override + protected Recipients doInBackground(Void... params) { + try { + String groupId = recipients.getPrimaryRecipient().getNumber(); + return DatabaseFactory.getGroupDatabase(context) + .getGroupMembers(GroupUtil.getDecodedId(groupId)); + } catch (IOException e) { + Log.w("ConverstionActivity", e); + return new Recipients(new LinkedList()); + } + } + + @Override + public void onPostExecute(Recipients members) { + if (progress != null) { + progress.dismiss(); + } + + List recipientStrings = new LinkedList(); + + for (Recipient recipient : members.getRecipientsList()) { + recipientStrings.add(recipient.toShortString()); + } + + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle(R.string.ConversationActivity_group_conversation_recipients); + builder.setIcon(R.drawable.ic_menu_groups_holo_dark); + builder.setCancelable(true); + builder.setItems(recipientStrings.toArray(new String[]{}), null); + builder.setPositiveButton(android.R.string.ok, null); + builder.show(); + } + + public void display() { + if (recipients.isGroupRecipient()) execute(); + else onPostExecute(recipients); + } +} diff --git a/src/org/thoughtcrime/securesms/database/GroupDatabase.java b/src/org/thoughtcrime/securesms/database/GroupDatabase.java index b10e15437d..ca208a2f77 100644 --- a/src/org/thoughtcrime/securesms/database/GroupDatabase.java +++ b/src/org/thoughtcrime/securesms/database/GroupDatabase.java @@ -77,7 +77,7 @@ public class GroupDatabase extends Database { for (String member : members) { try { - recipients.addAll(RecipientFactory.getRecipientsFromString(context, member, true) + recipients.addAll(RecipientFactory.getRecipientsFromString(context, member, false) .getRecipientsList()); } catch (RecipientFormattingException e) { Log.w("GroupDatabase", e);