Watches the correct OKHttp for relays

This commit is contained in:
Vitor Pamplona
2025-10-20 19:39:33 -04:00
parent f663bb78aa
commit 48a69f1d26
2 changed files with 20 additions and 26 deletions

View File

@@ -133,16 +133,6 @@ class AppModules(
scope = applicationIOScope,
)
// manages all relay connections
val okHttpClientForRelaysForDms =
DualHttpClientManager(
userAgent = appAgent,
proxyPortProvider = torManager.activePortOrNull,
isMobileDataProvider = connManager.isMobileOrNull,
keyCache = keyCache,
scope = applicationIOScope,
)
// Offers easy methods to know when connections are happening through Tor or not
val roleBasedHttpClientBuilder = RoleBasedHttpClientBuilder(okHttpClients, torPrefs.value)
@@ -170,12 +160,8 @@ class AppModules(
val websocketBuilder =
OkHttpWebSocket.Builder { url ->
val useTor = torEvaluatorFlow.flow.value.useTor(url)
if (url in torEvaluatorFlow.flow.value.dmRelayList) {
okHttpClientForRelaysForDms.getHttpClient(useTor)
} else {
okHttpClientForRelays.getHttpClient(useTor)
}
}
// Caches all events in Memory
val cache: LocalCache = LocalCache
@@ -184,7 +170,15 @@ class AppModules(
val client: INostrClient = NostrClient(websocketBuilder, applicationDefaultScope)
// Watches for changes on Tor and Relay List Settings
val relayProxyClientConnector = RelayProxyClientConnector(torEvaluatorFlow.flow, okHttpClients, connManager, client, torManager, applicationDefaultScope)
val relayProxyClientConnector =
RelayProxyClientConnector(
torEvaluatorFlow.flow,
okHttpClientForRelays,
connManager,
torManager,
client,
applicationDefaultScope,
)
// Verifies and inserts in the cache from all relays, all subscriptions
val cacheClientConnector = CacheClientConnector(client, cache)

View File

@@ -47,8 +47,8 @@ class RelayProxyClientConnector(
val torEvaluator: StateFlow<TorRelayEvaluation>,
val okHttpClients: DualHttpClientManager,
val connManager: ConnectivityManager,
val client: INostrClient,
val torManager: TorManager,
val client: INostrClient,
val scope: CoroutineScope,
) {
data class RelayServiceInfra(
@@ -56,6 +56,7 @@ class RelayProxyClientConnector(
val torConnection: OkHttpClient,
val clearConnection: OkHttpClient,
val connectivity: ConnectivityStatus,
val torStatus: TorServiceStatus,
)
@OptIn(FlowPreview::class)
@@ -65,8 +66,9 @@ class RelayProxyClientConnector(
okHttpClients.defaultHttpClient,
okHttpClients.defaultHttpClientWithoutProxy,
connManager.status,
) { torSettings, torConnection, clearConnection, connectivity ->
RelayServiceInfra(torSettings, torConnection, clearConnection, connectivity)
torManager.status,
) { torSettings, torConnection, clearConnection, connectivity, torStatus ->
RelayServiceInfra(torSettings, torConnection, clearConnection, connectivity, torStatus)
}.debounce(100)
.onEach {
if (it.connectivity is ConnectivityStatus.StartingService) {
@@ -76,18 +78,16 @@ class RelayProxyClientConnector(
if (client.isActive()) {
client.disconnect()
}
val torStatus = torManager.status.value
if (torStatus is TorServiceStatus.Active) {
torStatus.torControlConnection?.signal(TorControlCommands.SIGNAL_DORMANT)
if (it.torStatus is TorServiceStatus.Active) {
it.torStatus.torControlConnection?.signal(TorControlCommands.SIGNAL_DORMANT)
Log.d("ManageRelayServices", "Pausing Tor Activity")
}
} else if (it.connectivity is ConnectivityStatus.Active && !client.isActive()) {
Log.d("ManageRelayServices", "Connectivity On: Resuming Relay Services")
val torStatus = torManager.status.value
if (torStatus is TorServiceStatus.Active) {
torStatus.torControlConnection?.signal(TorControlCommands.SIGNAL_ACTIVE)
torStatus.torControlConnection?.signal(TorControlCommands.SIGNAL_NEWNYM)
if (it.torStatus is TorServiceStatus.Active) {
it.torStatus.torControlConnection?.signal(TorControlCommands.SIGNAL_ACTIVE)
it.torStatus.torControlConnection?.signal(TorControlCommands.SIGNAL_NEWNYM)
Log.d("ManageRelayServices", "Resuming Tor Activity with new nym")
}