From 6339b38deedfe1230bbf4b480778a095a80ca32b Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 13 May 2026 14:34:50 -0400 Subject: [PATCH] Move RemoteConfigResponse. --- .../api/remoteconfig/RemoteConfigResponse.kt | 12 ------------ .../internal/push/PushServiceSocket.java | 9 --------- .../org/signal/network/api/RemoteConfigApi.kt | 18 +++++++----------- 3 files changed, 7 insertions(+), 32 deletions(-) delete mode 100644 lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/remoteconfig/RemoteConfigResponse.kt diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/remoteconfig/RemoteConfigResponse.kt b/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/remoteconfig/RemoteConfigResponse.kt deleted file mode 100644 index a4aa95ffbf..0000000000 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/remoteconfig/RemoteConfigResponse.kt +++ /dev/null @@ -1,12 +0,0 @@ -package org.whispersystems.signalservice.api.remoteconfig - -import com.fasterxml.jackson.annotation.JsonProperty - -/** - * Response class used in /v2/config. [serverEpochTime] should only be used in REST calls. - */ -data class RemoteConfigResponse( - @JsonProperty - val config: Map = emptyMap(), - var serverEpochTime: Long = 0 -) diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java b/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java index 3e54aa8038..062485088f 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java +++ b/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java @@ -67,7 +67,6 @@ import org.whispersystems.signalservice.api.push.exceptions.SubmitVerificationCo import org.whispersystems.signalservice.api.push.exceptions.TokenNotAcceptedException; import org.whispersystems.signalservice.api.push.exceptions.UnregisteredUserException; import org.whispersystems.signalservice.api.registration.RestoreMethodBody; -import org.whispersystems.signalservice.api.remoteconfig.RemoteConfigResponse; import org.whispersystems.signalservice.api.svr.Svr3Credentials; import org.whispersystems.signalservice.api.util.CredentialsProvider; import org.whispersystems.signalservice.api.util.Tls12SocketFactory; @@ -629,14 +628,6 @@ public class PushServiceSocket { } } - public RemoteConfigResponse getRemoteConfig() throws IOException { - try (Response response = makeServiceRequest(REMOTE_CONFIG, "GET", jsonRequestBody(null), NO_HEADERS, NO_HANDLER, SealedSenderAccess.NONE, false)) { - RemoteConfigResponse remoteConfigResponse = JsonUtil.fromJson(readBodyString(response), RemoteConfigResponse.class); - remoteConfigResponse.setServerEpochTime(response.headers().get("X-Signal-Timestamp") != null ? Long.parseLong(response.headers().get("X-Signal-Timestamp")) : System.currentTimeMillis()); - return remoteConfigResponse; - } - } - public void cancelInFlightRequests() { synchronized (connections) { Log.w(TAG, "Canceling: " + connections.size()); diff --git a/lib/network/src/main/java/org/signal/network/api/RemoteConfigApi.kt b/lib/network/src/main/java/org/signal/network/api/RemoteConfigApi.kt index 9141108a9a..1cf931e8ec 100644 --- a/lib/network/src/main/java/org/signal/network/api/RemoteConfigApi.kt +++ b/lib/network/src/main/java/org/signal/network/api/RemoteConfigApi.kt @@ -5,8 +5,8 @@ package org.signal.network.api +import com.fasterxml.jackson.annotation.JsonProperty import org.whispersystems.signalservice.api.NetworkResult -import org.whispersystems.signalservice.api.remoteconfig.RemoteConfigResponse import org.whispersystems.signalservice.api.remoteconfig.RemoteConfigResult import org.whispersystems.signalservice.api.websocket.SignalWebSocket import org.whispersystems.signalservice.internal.get @@ -35,16 +35,6 @@ class RemoteConfigApi(val authWebSocket: SignalWebSocket.AuthenticatedWebSocket, val headers = if (eTag.isNotEmpty()) mapOf("If-None-Match" to eTag) else mapOf() val request = WebSocketRequestMessage.get("/v2/config", headers = headers) return NetworkResult.fromWebSocketRequest(signalWebSocket = authWebSocket, request = request, webSocketResponseConverter = RemoteConfigResultWebSocketResponseConverter()) - .fallback(predicate = { it is NetworkResult.StatusCodeError && it.code != 304 }) { - NetworkResult.fromFetch { - val response = pushServiceSocket.getRemoteConfig() - val transformed = response.config.map { it.key to (it.value.lowercase(Locale.getDefault()).toBooleanStrictOrNull() ?: it.value) }.toMap() - RemoteConfigResult( - config = transformed, - serverEpochTimeMilliseconds = response.serverEpochTime - ) - } - } } /** @@ -70,3 +60,9 @@ class RemoteConfigApi(val authWebSocket: SignalWebSocket.AuthenticatedWebSocket, } } } + +private data class RemoteConfigResponse( + @JsonProperty + val config: Map = emptyMap(), + var serverEpochTime: Long = 0 +)