Simplify capabilities representation in gRPC profile responses

This commit is contained in:
Jon Chambers 2024-10-30 16:35:12 -04:00 committed by Jon Chambers
parent 74f8889bfa
commit f5a93574f6
4 changed files with 8 additions and 23 deletions

View File

@ -12,7 +12,6 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import org.signal.chat.profile.AccountCapabilities;
import org.signal.chat.profile.Badge; import org.signal.chat.profile.Badge;
import org.signal.chat.profile.BadgeSvg; import org.signal.chat.profile.BadgeSvg;
import org.signal.chat.profile.GetExpiringProfileKeyCredentialResponse; import org.signal.chat.profile.GetExpiringProfileKeyCredentialResponse;
@ -81,16 +80,12 @@ public class ProfileGrpcHelper {
} }
@VisibleForTesting @VisibleForTesting
static AccountCapabilities buildAccountCapabilities(final Account account) { static List<org.signal.chat.common.DeviceCapability> buildAccountCapabilities(final Account account) {
final AccountCapabilities.Builder capabilitiesBuilder = AccountCapabilities.newBuilder(); return Arrays.stream(DeviceCapability.values())
Arrays.stream(DeviceCapability.values())
.filter(DeviceCapability::includeInProfile) .filter(DeviceCapability::includeInProfile)
.filter(account::hasCapability) .filter(account::hasCapability)
.map(DeviceCapabilityUtil::toGrpcDeviceCapability) .map(DeviceCapabilityUtil::toGrpcDeviceCapability)
.forEach(capabilitiesBuilder::addCapabilities); .toList();
return capabilitiesBuilder.build();
} }
private static List<BadgeSvg> buildBadgeSvgs(final List<org.whispersystems.textsecuregcm.entities.BadgeSvg> badgeSvgs) { private static List<BadgeSvg> buildBadgeSvgs(final List<org.whispersystems.textsecuregcm.entities.BadgeSvg> badgeSvgs) {
@ -111,7 +106,7 @@ public class ProfileGrpcHelper {
final ProfileBadgeConverter profileBadgeConverter) { final ProfileBadgeConverter profileBadgeConverter) {
final GetUnversionedProfileResponse.Builder responseBuilder = GetUnversionedProfileResponse.newBuilder() final GetUnversionedProfileResponse.Builder responseBuilder = GetUnversionedProfileResponse.newBuilder()
.setIdentityKey(ByteString.copyFrom(targetAccount.getIdentityKey(targetIdentifier.identityType()).serialize())) .setIdentityKey(ByteString.copyFrom(targetAccount.getIdentityKey(targetIdentifier.identityType()).serialize()))
.setCapabilities(buildAccountCapabilities(targetAccount)); .addAllCapabilities(buildAccountCapabilities(targetAccount));
switch (targetIdentifier.identityType()) { switch (targetIdentifier.identityType()) {
case ACI -> { case ACI -> {

View File

@ -241,7 +241,7 @@ message GetUnversionedProfileResponse {
/** /**
* A list of capabilities enabled on the account. * A list of capabilities enabled on the account.
*/ */
AccountCapabilities capabilities = 4; repeated common.DeviceCapability capabilities = 4;
/** /**
* A list of badges associated with the account. * A list of badges associated with the account.
*/ */
@ -317,10 +317,6 @@ message ProfileAvatarUploadAttributes {
bytes signature = 7; bytes signature = 7;
} }
message AccountCapabilities {
repeated common.DeviceCapability capabilities = 1;
}
message Badge { message Badge {
/** /**
* An ID that uniquely identifies the badge. * An ID that uniquely identifies the badge.

View File

@ -36,7 +36,6 @@ import org.junit.jupiter.params.provider.MethodSource;
import org.mockito.Mock; import org.mockito.Mock;
import org.signal.chat.common.IdentityType; import org.signal.chat.common.IdentityType;
import org.signal.chat.common.ServiceIdentifier; import org.signal.chat.common.ServiceIdentifier;
import org.signal.chat.profile.AccountCapabilities;
import org.signal.chat.profile.CredentialType; import org.signal.chat.profile.CredentialType;
import org.signal.chat.profile.GetExpiringProfileKeyCredentialAnonymousRequest; import org.signal.chat.profile.GetExpiringProfileKeyCredentialAnonymousRequest;
import org.signal.chat.profile.GetExpiringProfileKeyCredentialRequest; import org.signal.chat.profile.GetExpiringProfileKeyCredentialRequest;
@ -161,9 +160,7 @@ public class ProfileAnonymousGrpcServiceTest extends SimpleBaseGrpcTest<ProfileA
.setIdentityKey(ByteString.copyFrom(identityKey.serialize())) .setIdentityKey(ByteString.copyFrom(identityKey.serialize()))
.setUnidentifiedAccess(ByteString.copyFrom(unidentifiedAccessChecksum)) .setUnidentifiedAccess(ByteString.copyFrom(unidentifiedAccessChecksum))
.setUnrestrictedUnidentifiedAccess(false) .setUnrestrictedUnidentifiedAccess(false)
.setCapabilities(AccountCapabilities.newBuilder() .addCapabilities(org.signal.chat.common.DeviceCapability.DEVICE_CAPABILITY_DELETE_SYNC)
.addCapabilities(org.signal.chat.common.DeviceCapability.DEVICE_CAPABILITY_DELETE_SYNC)
.build())
.addAllBadges(ProfileGrpcHelper.buildBadges(badges)) .addAllBadges(ProfileGrpcHelper.buildBadges(badges))
.build(); .build();
@ -215,7 +212,7 @@ public class ProfileAnonymousGrpcServiceTest extends SimpleBaseGrpcTest<ProfileA
final GetUnversionedProfileResponse expectedResponse = GetUnversionedProfileResponse.newBuilder() final GetUnversionedProfileResponse expectedResponse = GetUnversionedProfileResponse.newBuilder()
.setIdentityKey(ByteString.copyFrom(identityKey.serialize())) .setIdentityKey(ByteString.copyFrom(identityKey.serialize()))
.setUnrestrictedUnidentifiedAccess(false) .setUnrestrictedUnidentifiedAccess(false)
.setCapabilities(ProfileGrpcHelper.buildAccountCapabilities(account)) .addAllCapabilities(ProfileGrpcHelper.buildAccountCapabilities(account))
.addAllBadges(ProfileGrpcHelper.buildBadges(badges)) .addAllBadges(ProfileGrpcHelper.buildBadges(badges))
.build(); .build();

View File

@ -50,7 +50,6 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock; import org.mockito.Mock;
import org.signal.chat.common.IdentityType; import org.signal.chat.common.IdentityType;
import org.signal.chat.common.ServiceIdentifier; import org.signal.chat.common.ServiceIdentifier;
import org.signal.chat.profile.AccountCapabilities;
import org.signal.chat.profile.CredentialType; import org.signal.chat.profile.CredentialType;
import org.signal.chat.profile.GetExpiringProfileKeyCredentialRequest; import org.signal.chat.profile.GetExpiringProfileKeyCredentialRequest;
import org.signal.chat.profile.GetExpiringProfileKeyCredentialResponse; import org.signal.chat.profile.GetExpiringProfileKeyCredentialResponse;
@ -439,9 +438,7 @@ public class ProfileGrpcServiceTest extends SimpleBaseGrpcTest<ProfileGrpcServic
.setIdentityKey(ByteString.copyFrom(identityKey.serialize())) .setIdentityKey(ByteString.copyFrom(identityKey.serialize()))
.setUnidentifiedAccess(ByteString.copyFrom(unidentifiedAccessChecksum)) .setUnidentifiedAccess(ByteString.copyFrom(unidentifiedAccessChecksum))
.setUnrestrictedUnidentifiedAccess(true) .setUnrestrictedUnidentifiedAccess(true)
.setCapabilities(AccountCapabilities.newBuilder() .addCapabilities(org.signal.chat.common.DeviceCapability.DEVICE_CAPABILITY_DELETE_SYNC)
.addCapabilities(org.signal.chat.common.DeviceCapability.DEVICE_CAPABILITY_DELETE_SYNC)
.build())
.addAllBadges(ProfileGrpcHelper.buildBadges(badges)) .addAllBadges(ProfileGrpcHelper.buildBadges(badges))
.build(); .build();