From c74176684fdec8559777575a76bb2da1a21c0b56 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 15 Mar 2024 19:28:59 -0400 Subject: [PATCH] Preparing to refactor the Relay classes. --- .../amethyst/service/relays/Client.kt | 12 ++++--- .../amethyst/service/relays/Relay.kt | 18 +++++++---- .../amethyst/service/relays/RelayPool.kt | 7 +++-- .../amethyst/ui/navigation/AppTopBar.kt | 31 ++++++++++--------- 4 files changed, 40 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Client.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Client.kt index 4bf85b83a..d6cf49914 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Client.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Client.kt @@ -98,7 +98,7 @@ object Client : RelayPool.Listener { checkNotInMainThread() subscriptions = subscriptions + Pair(subscriptionId, filters) - RelayPool.sendFilter(subscriptionId) + RelayPool.sendFilter(subscriptionId, filters) } fun sendFilterOnlyIfDisconnected( @@ -134,7 +134,7 @@ object Client : RelayPool.Listener { newSporadicRelay( relay, feedTypes, - onConnected = { relay -> relay.send(signedEvent) }, + onConnected = { myRelay -> myRelay.send(signedEvent) }, onDone = onDone, ) } @@ -152,7 +152,9 @@ object Client : RelayPool.Listener { RelayPool.addRelay(relay) relay.connectAndRun { - allSubscriptions().forEach { relay.sendFilter(requestId = it) } + allSubscriptions().forEach { + relay.sendFilter(it.key, it.value) + } onConnected(relay) @@ -264,8 +266,8 @@ object Client : RelayPool.Listener { listeners = listeners.minus(listener) } - fun allSubscriptions(): Set { - return subscriptions.keys + fun allSubscriptions(): Map> { + return subscriptions } fun getSubscriptionFilters(subId: String): List { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Relay.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Relay.kt index 8d2e67d98..004b8a58a 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Relay.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Relay.kt @@ -344,16 +344,15 @@ class Relay( afterEOSEPerSubscription = LinkedHashMap(afterEOSEPerSubscription.size) } - fun sendFilter(requestId: String) { + fun sendFilter( + requestId: String, + filters: List, + ) { checkNotInMainThread() if (read) { if (isConnected()) { if (isReady) { - val filters = - Client.getSubscriptionFilters(requestId).filter { filter -> - activeTypes.any { it in filter.types } - } if (filters.isNotEmpty()) { val request = filters.joinToStringLimited( @@ -423,7 +422,14 @@ class Relay( fun renewFilters() { // Force update all filters after AUTH. - Client.allSubscriptions().forEach { sendFilter(requestId = it) } + Client.allSubscriptions().forEach { + val filters = + it.value.filter { filter -> + activeTypes.any { it in filter.types } + } + + sendFilter(requestId = it.key, filters) + } } fun send(signedEvent: EventInterface) { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/relays/RelayPool.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/relays/RelayPool.kt index 08135e9bb..af4e8b2c5 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/relays/RelayPool.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/relays/RelayPool.kt @@ -77,8 +77,11 @@ object RelayPool : Relay.Listener { relays.forEach { it.connect() } } - fun sendFilter(subscriptionId: String) { - relays.forEach { it.sendFilter(subscriptionId) } + fun sendFilter( + subscriptionId: String, + filters: List, + ) { + relays.forEach { it.sendFilter(subscriptionId, filters) } } fun connectAndSendFiltersIfDisconnected() { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppTopBar.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppTopBar.kt index c5c99e203..68ed29da2 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppTopBar.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppTopBar.kt @@ -356,7 +356,9 @@ private fun RenderRoomTopBar( RoomNameOnlyDisplay( room, - Modifier.padding(start = 10.dp).weight(1f), + Modifier + .padding(start = 10.dp) + .weight(1f), fontWeight = FontWeight.Normal, accountViewModel.userProfile(), ) @@ -504,7 +506,10 @@ fun GenericMainTopBar( ) { Box(Modifier) { Column( - modifier = Modifier.fillMaxWidth().fillMaxHeight(), + modifier = + Modifier + .fillMaxWidth() + .fillMaxHeight(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center, ) { @@ -784,12 +789,14 @@ fun SimpleTextSpinner( } Box( modifier = - Modifier.matchParentSize().clickable( - interactionSource = interactionSource, - indication = null, - ) { - optionsShowing = true - }, + Modifier + .matchParentSize() + .clickable( + interactionSource = interactionSource, + indication = null, + ) { + optionsShowing = true + }, ) } @@ -922,13 +929,7 @@ fun AmethystClickableIcon() { fun debugState(context: Context) { Client.allSubscriptions() - .map { - "$it ${ - Client.getSubscriptionFilters(it) - .joinToString { it.filter.toJson() } - }" - } - .forEach { Log.d("STATE DUMP", it) } + .forEach { Log.d("STATE DUMP", "${it.key} ${it.value.joinToString { it.filter.toJson() }}") } NostrAccountDataSource.printCounter() NostrChannelDataSource.printCounter()