mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-11-10 21:36:38 +01:00
Watches the correct OKHttp for relays
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user