Convert `Device.Capabilities` to a record

This commit is contained in:
Jon Chambers 2023-08-07 12:37:07 -04:00 committed by Jon Chambers
parent d868e3075c
commit d51c6fd2f8
7 changed files with 16 additions and 53 deletions

View File

@ -117,7 +117,7 @@ public class TestUser {
}
public AccountAttributes accountAttributes() {
return new AccountAttributes(true, registrationId, "", "", true, new Device.DeviceCapabilities())
return new AccountAttributes(true, registrationId, "", "", true, new Device.DeviceCapabilities(false, false, false, false))
.withUnidentifiedAccessKey(unidentifiedAccessKey)
.withRecoveryPassword(registrationPassword);
}

View File

@ -344,7 +344,7 @@ public class DeviceController {
}
static boolean isCapabilityDowngrade(Account account, DeviceCapabilities capabilities) {
return account.isPniSupported() && !capabilities.isPni();
return account.isPniSupported() && !capabilities.pni();
}
private Pair<Account, Device> createDevice(final String password,

View File

@ -247,21 +247,21 @@ public class Account {
public boolean isStorageSupported() {
requireNotStale();
return devices.stream().anyMatch(device -> device.getCapabilities() != null && device.getCapabilities().isStorage());
return devices.stream().anyMatch(device -> device.getCapabilities() != null && device.getCapabilities().storage());
}
public boolean isTransferSupported() {
requireNotStale();
return getMasterDevice().map(Device::getCapabilities).map(Device.DeviceCapabilities::isTransfer).orElse(false);
return getMasterDevice().map(Device::getCapabilities).map(Device.DeviceCapabilities::transfer).orElse(false);
}
public boolean isPniSupported() {
return allEnabledDevicesHaveCapability(DeviceCapabilities::isPni);
return allEnabledDevicesHaveCapability(DeviceCapabilities::pni);
}
public boolean isPaymentActivationSupported() {
return allEnabledDevicesHaveCapability(DeviceCapabilities::isPaymentActivation);
return allEnabledDevicesHaveCapability(DeviceCapabilities::paymentActivation);
}
private boolean allEnabledDevicesHaveCapability(final Predicate<DeviceCapabilities> predicate) {

View File

@ -274,43 +274,6 @@ public class Device {
return this.userAgent;
}
public static class DeviceCapabilities {
@JsonProperty
private boolean storage;
@JsonProperty
private boolean transfer;
@JsonProperty
private boolean pni;
@JsonProperty
private boolean paymentActivation;
public DeviceCapabilities() {
}
public DeviceCapabilities(boolean storage, boolean transfer, final boolean pni, final boolean paymentActivation) {
this.storage = storage;
this.transfer = transfer;
this.pni = pni;
this.paymentActivation = paymentActivation;
}
public boolean isStorage() {
return storage;
}
public boolean isTransfer() {
return transfer;
}
public boolean isPni() {
return pni;
}
public boolean isPaymentActivation() {
return paymentActivation;
}
public record DeviceCapabilities(boolean storage, boolean transfer, boolean pni, boolean paymentActivation) {
}
}

View File

@ -437,10 +437,10 @@ class RegistrationControllerTest {
}
final AccountAttributes fetchesMessagesAccountAttributes =
new AccountAttributes(true, 1, "test", null, true, new Device.DeviceCapabilities());
new AccountAttributes(true, 1, "test", null, true, new Device.DeviceCapabilities(false, false, false, false));
final AccountAttributes pushAccountAttributes =
new AccountAttributes(false, 1, "test", null, true, new Device.DeviceCapabilities());
new AccountAttributes(false, 1, "test", null, true, new Device.DeviceCapabilities(false, false, false, false));
return Stream.of(
// "Fetches messages" is true, but an APNs token is provided
@ -529,7 +529,7 @@ class RegistrationControllerTest {
}
final AccountAttributes accountAttributes =
new AccountAttributes(true, 1, "test", null, true, new Device.DeviceCapabilities());
new AccountAttributes(true, 1, "test", null, true, new Device.DeviceCapabilities(false, false, false, false));
return Stream.of(
// Signed PNI EC pre-key is missing
@ -720,7 +720,7 @@ class RegistrationControllerTest {
RegistrationRequest reg = new RegistrationRequest("session-id",
new byte[0],
new AccountAttributes(true, 1, "test", null, true, new Device.DeviceCapabilities()),
new AccountAttributes(true, 1, "test", null, true, new Device.DeviceCapabilities(false, false, false, false)),
true,
requireAtomic,
Optional.empty(),
@ -758,10 +758,10 @@ class RegistrationControllerTest {
}
final AccountAttributes fetchesMessagesAccountAttributes =
new AccountAttributes(true, 1, "test", null, true, new Device.DeviceCapabilities());
new AccountAttributes(true, 1, "test", null, true, new Device.DeviceCapabilities(false, false, false, false));
final AccountAttributes pushAccountAttributes =
new AccountAttributes(false, 1, "test", null, true, new Device.DeviceCapabilities());
new AccountAttributes(false, 1, "test", null, true, new Device.DeviceCapabilities(false, false, false, false));
final String apnsToken = "apns-token";
final String apnsVoipToken = "apns-voip-token";

View File

@ -222,8 +222,8 @@ class AccountTest {
when(transferCapableLinkedDevice.isMaster()).thenReturn(false);
when(transferCapableLinkedDevice.getCapabilities()).thenReturn(transferCapabilities);
when(transferCapabilities.isTransfer()).thenReturn(true);
when(nonTransferCapabilities.isTransfer()).thenReturn(false);
when(transferCapabilities.transfer()).thenReturn(true);
when(nonTransferCapabilities.transfer()).thenReturn(false);
{
final Account transferableMasterAccount =

View File

@ -153,7 +153,7 @@ class AccountsManagerChangeNumberIntegrationTest {
final ECKeyPair pniIdentityKeyPair = Curve.generateKeyPair();
final ECSignedPreKey rotatedSignedPreKey = KeysHelper.signedECPreKey(1L, pniIdentityKeyPair);
final AccountAttributes accountAttributes = new AccountAttributes(true, rotatedPniRegistrationId + 1, "test", null, true, new Device.DeviceCapabilities());
final AccountAttributes accountAttributes = new AccountAttributes(true, rotatedPniRegistrationId + 1, "test", null, true, new Device.DeviceCapabilities(false, false, false, false));
final Account account = accountsManager.create(originalNumber, "password", null, accountAttributes, new ArrayList<>());
account.getMasterDevice().orElseThrow().setSignedPreKey(KeysHelper.signedECPreKey(1, pniIdentityKeyPair));