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, 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 // Offers easy methods to know when connections are happening through Tor or not
val roleBasedHttpClientBuilder = RoleBasedHttpClientBuilder(okHttpClients, torPrefs.value) val roleBasedHttpClientBuilder = RoleBasedHttpClientBuilder(okHttpClients, torPrefs.value)
@@ -170,12 +160,8 @@ class AppModules(
val websocketBuilder = val websocketBuilder =
OkHttpWebSocket.Builder { url -> OkHttpWebSocket.Builder { url ->
val useTor = torEvaluatorFlow.flow.value.useTor(url) val useTor = torEvaluatorFlow.flow.value.useTor(url)
if (url in torEvaluatorFlow.flow.value.dmRelayList) {
okHttpClientForRelaysForDms.getHttpClient(useTor)
} else {
okHttpClientForRelays.getHttpClient(useTor) okHttpClientForRelays.getHttpClient(useTor)
} }
}
// Caches all events in Memory // Caches all events in Memory
val cache: LocalCache = LocalCache val cache: LocalCache = LocalCache
@@ -184,7 +170,15 @@ class AppModules(
val client: INostrClient = NostrClient(websocketBuilder, applicationDefaultScope) val client: INostrClient = NostrClient(websocketBuilder, applicationDefaultScope)
// Watches for changes on Tor and Relay List Settings // 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 // Verifies and inserts in the cache from all relays, all subscriptions
val cacheClientConnector = CacheClientConnector(client, cache) val cacheClientConnector = CacheClientConnector(client, cache)

View File

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