Search in sources :

Example 1 with Member

use of org.signal.storageservice.protos.groups.Member in project Signal-Android by WhisperSystems.

the class GroupDatabase method getGroupMembers.

@WorkerThread
@NonNull
public List<Recipient> getGroupMembers(@NonNull GroupId groupId, @NonNull MemberSet memberSet) {
    if (groupId.isV2()) {
        return getGroup(groupId).transform(g -> g.requireV2GroupProperties().getMemberRecipients(memberSet)).or(Collections.emptyList());
    } else {
        List<RecipientId> currentMembers = getCurrentMembers(groupId);
        List<Recipient> recipients = new ArrayList<>(currentMembers.size());
        for (RecipientId member : currentMembers) {
            Recipient resolved = Recipient.resolved(member);
            if (memberSet.includeSelf || !resolved.isSelf()) {
                recipients.add(resolved);
            }
        }
        return recipients;
    }
}
Also used : SignalStore(org.thoughtcrime.securesms.keyvalue.SignalStore) GroupMigrationMembershipChange(org.thoughtcrime.securesms.groups.GroupMigrationMembershipChange) NonNull(androidx.annotation.NonNull) RequestGroupV2InfoJob(org.thoughtcrime.securesms.jobs.RequestGroupV2InfoJob) GroupAccessControl(org.thoughtcrime.securesms.groups.GroupAccessControl) GroupMasterKey(org.signal.zkgroup.groups.GroupMasterKey) SecureRandom(java.security.SecureRandom) Member(org.signal.storageservice.protos.groups.Member) SenderKeyUtil(org.thoughtcrime.securesms.crypto.SenderKeyUtil) RecipientId(org.thoughtcrime.securesms.recipients.RecipientId) SqlUtil(org.thoughtcrime.securesms.util.SqlUtil) Locale(java.util.Locale) Map(java.util.Map) DecryptedGroupChange(org.signal.storageservice.protos.groups.local.DecryptedGroupChange) Recipient(org.thoughtcrime.securesms.recipients.Recipient) GroupsV2StateProcessor(org.thoughtcrime.securesms.groups.v2.processing.GroupsV2StateProcessor) InvalidProtocolBufferException(com.google.protobuf.InvalidProtocolBufferException) ACI(org.whispersystems.signalservice.api.push.ACI) DecryptedGroupUtil(org.whispersystems.signalservice.api.groupsv2.DecryptedGroupUtil) ApplicationDependencies(org.thoughtcrime.securesms.dependencies.ApplicationDependencies) Collection(java.util.Collection) EnabledState(org.signal.storageservice.protos.groups.local.EnabledState) Set(java.util.Set) SetUtil(org.thoughtcrime.securesms.util.SetUtil) UUID(java.util.UUID) Collectors(java.util.stream.Collectors) InvalidInputException(org.signal.zkgroup.InvalidInputException) Objects(java.util.Objects) Log(org.signal.core.util.logging.Log) DecryptedGroup(org.signal.storageservice.protos.groups.local.DecryptedGroup) List(java.util.List) Nullable(androidx.annotation.Nullable) GroupId(org.thoughtcrime.securesms.groups.GroupId) ContentValues(android.content.ContentValues) Context(android.content.Context) Stream(com.annimon.stream.Stream) Util(org.thoughtcrime.securesms.util.Util) WorkerThread(androidx.annotation.WorkerThread) HashMap(java.util.HashMap) AccessControl(org.signal.storageservice.protos.groups.AccessControl) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) SuppressLint(android.annotation.SuppressLint) LinkedList(java.util.LinkedList) DistributionId(org.whispersystems.signalservice.api.push.DistributionId) Cursor(android.database.Cursor) GroupChangeReconstruct(org.whispersystems.signalservice.api.groupsv2.GroupChangeReconstruct) SignalServiceAttachmentPointer(org.whispersystems.signalservice.api.messages.SignalServiceAttachmentPointer) UuidUtil(org.whispersystems.signalservice.api.util.UuidUtil) TextUtils(android.text.TextUtils) Optional(org.whispersystems.libsignal.util.guava.Optional) CursorUtil(org.thoughtcrime.securesms.util.CursorUtil) Closeable(java.io.Closeable) ServiceId(org.whispersystems.signalservice.api.push.ServiceId) Collections(java.util.Collections) RecipientId(org.thoughtcrime.securesms.recipients.RecipientId) ArrayList(java.util.ArrayList) Recipient(org.thoughtcrime.securesms.recipients.Recipient) WorkerThread(androidx.annotation.WorkerThread) NonNull(androidx.annotation.NonNull)

Example 2 with Member

use of org.signal.storageservice.protos.groups.Member in project Signal-Android by WhisperSystems.

the class DecryptedGroupUtil method applyPromoteRequestingMemberActions.

private static void applyPromoteRequestingMemberActions(DecryptedGroup.Builder builder, List<DecryptedApproveMember> promoteRequestingMembers) throws NotAbleToApplyGroupV2ChangeException {
    for (DecryptedApproveMember approvedMember : promoteRequestingMembers) {
        int index = indexOfUuidInRequestingList(builder.getRequestingMembersList(), approvedMember.getUuid());
        if (index == -1) {
            Log.w(TAG, "Deleted member on change not found in group");
            continue;
        }
        DecryptedRequestingMember requestingMember = builder.getRequestingMembers(index);
        Member.Role role = approvedMember.getRole();
        ensureKnownRole(role);
        builder.removeRequestingMembers(index).addMembers(DecryptedMember.newBuilder().setUuid(approvedMember.getUuid()).setProfileKey(requestingMember.getProfileKey()).setRole(role));
    }
}
Also used : DecryptedApproveMember(org.signal.storageservice.protos.groups.local.DecryptedApproveMember) DecryptedRequestingMember(org.signal.storageservice.protos.groups.local.DecryptedRequestingMember) DecryptedMember(org.signal.storageservice.protos.groups.local.DecryptedMember) DecryptedPendingMember(org.signal.storageservice.protos.groups.local.DecryptedPendingMember) Member(org.signal.storageservice.protos.groups.Member) DecryptedApproveMember(org.signal.storageservice.protos.groups.local.DecryptedApproveMember) DecryptedRequestingMember(org.signal.storageservice.protos.groups.local.DecryptedRequestingMember)

Aggregations

Member (org.signal.storageservice.protos.groups.Member)2 SuppressLint (android.annotation.SuppressLint)1 ContentValues (android.content.ContentValues)1 Context (android.content.Context)1 Cursor (android.database.Cursor)1 TextUtils (android.text.TextUtils)1 NonNull (androidx.annotation.NonNull)1 Nullable (androidx.annotation.Nullable)1 WorkerThread (androidx.annotation.WorkerThread)1 Stream (com.annimon.stream.Stream)1 InvalidProtocolBufferException (com.google.protobuf.InvalidProtocolBufferException)1 Closeable (java.io.Closeable)1 SecureRandom (java.security.SecureRandom)1 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 Collections (java.util.Collections)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 LinkedList (java.util.LinkedList)1 List (java.util.List)1