mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-20 08:49:43 +01:00
Add versionedExpirationTimer capability
This commit is contained in:
@@ -392,7 +392,10 @@ public class DeviceController {
|
||||
}
|
||||
|
||||
private static boolean isCapabilityDowngrade(Account account, DeviceCapabilities capabilities) {
|
||||
return account.isDeleteSyncSupported() && !capabilities.deleteSync();
|
||||
boolean isDowngrade = false;
|
||||
isDowngrade |= account.isDeleteSyncSupported() && !capabilities.deleteSync();
|
||||
isDowngrade |= account.isVersionedExpirationTimerSupported() && !capabilities.versionedExpirationTimer();
|
||||
return isDowngrade;
|
||||
}
|
||||
|
||||
private static String getUsedTokenKey(final String token) {
|
||||
|
||||
@@ -8,11 +8,13 @@ package org.whispersystems.textsecuregcm.entities;
|
||||
import org.whispersystems.textsecuregcm.storage.Account;
|
||||
|
||||
public record UserCapabilities(
|
||||
// TODO: Remove the paymentActivation capability entirely sometime soon after 2024-06-30
|
||||
// TODO: Remove the paymentActivation capability entirely sometime soon after 2024-10-07
|
||||
boolean paymentActivation,
|
||||
boolean deleteSync) {
|
||||
boolean deleteSync,
|
||||
boolean versionedExpirationTimer) {
|
||||
|
||||
public static UserCapabilities createForAccount(final Account account) {
|
||||
return new UserCapabilities(true, account.isDeleteSyncSupported());
|
||||
return new UserCapabilities(true, account.isDeleteSyncSupported(),
|
||||
account.isVersionedExpirationTimerSupported());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,7 +198,8 @@ public class DevicesGrpcService extends ReactorDevicesGrpc.DevicesImplBase {
|
||||
request.getStorage(),
|
||||
request.getTransfer(),
|
||||
request.getPaymentActivation(),
|
||||
request.getDeleteSync())))))
|
||||
request.getDeleteSync(),
|
||||
request.getVersionedExpirationTimer())))))
|
||||
.thenReturn(SetCapabilitiesResponse.newBuilder().build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,6 +84,7 @@ public class ProfileGrpcHelper {
|
||||
return UserCapabilities.newBuilder()
|
||||
.setPaymentActivation(capabilities.paymentActivation())
|
||||
.setDeleteSync(capabilities.deleteSync())
|
||||
.setVersionedExpirationTimer(capabilities.versionedExpirationTimer())
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@@ -296,6 +296,10 @@ public class Account {
|
||||
return allDevicesHaveCapability(DeviceCapabilities::deleteSync);
|
||||
}
|
||||
|
||||
public boolean isVersionedExpirationTimerSupported() {
|
||||
return allDevicesHaveCapability(DeviceCapabilities::versionedExpirationTimer);
|
||||
}
|
||||
|
||||
private boolean allDevicesHaveCapability(final Predicate<DeviceCapabilities> predicate) {
|
||||
requireNotStale();
|
||||
|
||||
|
||||
@@ -232,6 +232,7 @@ public class Device {
|
||||
return this.userAgent;
|
||||
}
|
||||
|
||||
public record DeviceCapabilities(boolean storage, boolean transfer, boolean paymentActivation, boolean deleteSync) {
|
||||
public record DeviceCapabilities(boolean storage, boolean transfer, boolean paymentActivation, boolean deleteSync,
|
||||
boolean versionedExpirationTimer) {
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user