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

77 lines
2.6 KiB
Java
Raw Normal View History

package org.thoughtcrime.securesms.groups;
import android.content.Context;
import android.graphics.Bitmap;
2019-07-22 17:33:45 +02:00
2019-06-05 21:47:14 +02:00
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
2020-03-05 16:18:44 +01:00
import androidx.annotation.WorkerThread;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.whispersystems.signalservice.api.util.InvalidNumberException;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
2019-07-22 17:33:45 +02:00
public final class GroupManager {
public static @NonNull GroupActionResult createGroup(@NonNull Context context,
@NonNull Set<Recipient> members,
@Nullable Bitmap avatar,
@Nullable String name,
boolean mms)
{
Set<RecipientId> addresses = getMemberIds(members);
2019-07-22 17:33:45 +02:00
return V1GroupManager.createGroup(context, addresses, avatar, name, mms);
}
public static GroupActionResult updateGroup(@NonNull Context context,
2020-03-26 15:00:17 +01:00
@NonNull GroupId groupId,
@NonNull Set<Recipient> members,
@Nullable Bitmap avatar,
@Nullable String name)
throws InvalidNumberException
{
Set<RecipientId> addresses = getMemberIds(members);
2019-07-22 17:33:45 +02:00
return V1GroupManager.updateGroup(context, groupId, addresses, avatar, name);
}
private static Set<RecipientId> getMemberIds(Collection<Recipient> recipients) {
final Set<RecipientId> results = new HashSet<>();
for (Recipient recipient : recipients) {
results.add(recipient.getId());
}
return results;
}
2020-03-05 16:18:44 +01:00
@WorkerThread
public static boolean leaveGroup(@NonNull Context context, @NonNull Recipient groupRecipient) {
2020-03-26 15:00:17 +01:00
GroupId groupId = groupRecipient.requireGroupId();
2020-03-05 16:18:44 +01:00
2020-03-27 15:28:48 +01:00
return V1GroupManager.leaveGroup(context, groupId.requireV1(), groupRecipient);
2020-03-05 16:18:44 +01:00
}
public static class GroupActionResult {
2019-07-22 17:33:45 +02:00
private final Recipient groupRecipient;
private final long threadId;
public GroupActionResult(Recipient groupRecipient, long threadId) {
this.groupRecipient = groupRecipient;
this.threadId = threadId;
}
public Recipient getGroupRecipient() {
return groupRecipient;
}
public long getThreadId() {
return threadId;
}
}
}