mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-11-10 06:57:34 +01:00
Watches the correct OKHttp for relays
This commit is contained in:
@@ -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,11 +160,7 @@ 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)
|
||||
}
|
||||
okHttpClientForRelays.getHttpClient(useTor)
|
||||
}
|
||||
|
||||
// Caches all events in Memory
|
||||
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user