Moves static relay stats to a injectable object
This commit is contained in:
@@ -60,6 +60,7 @@ import com.vitorpamplona.amethyst.ui.screen.UiSettingsState
|
||||
import com.vitorpamplona.amethyst.ui.tor.TorManager
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.client.stats.RelayStats
|
||||
import com.vitorpamplona.quartz.nip03Timestamp.VerificationStateCache
|
||||
import com.vitorpamplona.quartz.nip03Timestamp.ots.OtsBlockHeightCache
|
||||
import com.vitorpamplona.quartz.utils.Log
|
||||
@@ -196,6 +197,8 @@ class AppModules(
|
||||
// Tries to verify new OTS events when they arrive.
|
||||
val otsEventVerifier = IncomingOtsEventVerifier(otsVerifCache, cache, applicationDefaultScope)
|
||||
|
||||
val relayStats = RelayStats(client)
|
||||
|
||||
val logger = if (isDebug) RelaySpeedLogger(client) else null
|
||||
|
||||
// Coordinates all subscriptions for the Nostr Client
|
||||
|
||||
@@ -21,12 +21,12 @@
|
||||
package com.vitorpamplona.amethyst.model
|
||||
|
||||
import android.util.LruCache
|
||||
import com.vitorpamplona.amethyst.Amethyst
|
||||
import com.vitorpamplona.amethyst.ui.note.njumpLink
|
||||
import com.vitorpamplona.quartz.nip01Core.core.Address
|
||||
import com.vitorpamplona.quartz.nip01Core.core.AddressableEvent
|
||||
import com.vitorpamplona.quartz.nip01Core.core.Event
|
||||
import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.client.stats.RelayStats
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl
|
||||
import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser
|
||||
import com.vitorpamplona.quartz.nip19Bech32.entities.NAddress
|
||||
@@ -93,7 +93,9 @@ class AntiSpamFilter {
|
||||
val spammer = logOffender(hash, event)
|
||||
|
||||
if (spammer.shouldHide() && relay != null) {
|
||||
RelayStats.newSpam(relay, "$link1 $link2")
|
||||
Amethyst.instance.relayStats
|
||||
.get(relay)
|
||||
.newSpam("$link1 $link2")
|
||||
}
|
||||
|
||||
flowSpam.tryEmit(AntiSpamState(this))
|
||||
@@ -119,7 +121,9 @@ class AntiSpamFilter {
|
||||
val spammer = logOffender(hash, event)
|
||||
|
||||
if (spammer.shouldHide() && relay != null) {
|
||||
RelayStats.newSpam(relay, "$link1 $link2")
|
||||
Amethyst.instance.relayStats
|
||||
.get(relay)
|
||||
.newSpam("$link1 $link2")
|
||||
}
|
||||
|
||||
flowSpam.tryEmit(AntiSpamState(this))
|
||||
|
||||
+6
-3
@@ -50,6 +50,7 @@ import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import com.vitorpamplona.amethyst.Amethyst
|
||||
import com.vitorpamplona.amethyst.R
|
||||
import com.vitorpamplona.amethyst.model.nip11RelayInfo.loadRelayInfo
|
||||
import com.vitorpamplona.amethyst.ui.actions.CrossfadeIfEnabled
|
||||
@@ -74,7 +75,6 @@ import com.vitorpamplona.amethyst.ui.theme.StdPadding
|
||||
import com.vitorpamplona.amethyst.ui.theme.StdVertSpacer
|
||||
import com.vitorpamplona.quartz.nip01Core.core.EmptyTagList
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.client.stats.RelayDebugMessage
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.client.stats.RelayStats
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.normalizer.RelayUrlNormalizer
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.normalizer.displayUrl
|
||||
@@ -129,7 +129,7 @@ fun RelayInformationScreen(
|
||||
|
||||
val messages =
|
||||
remember(relay) {
|
||||
RelayStats
|
||||
Amethyst.instance.relayStats
|
||||
.get(url = relay)
|
||||
.messages
|
||||
.snapshot()
|
||||
@@ -158,7 +158,10 @@ fun RelayInformationScreen(
|
||||
iconUrl = relayInfo.icon,
|
||||
loadProfilePicture = accountViewModel.settings.showProfilePictures(),
|
||||
loadRobohash = accountViewModel.settings.isNotPerformanceMode(),
|
||||
RelayStats.get(relay).pingInMs,
|
||||
pingInMs =
|
||||
Amethyst.instance.relayStats
|
||||
.get(relay)
|
||||
.pingInMs,
|
||||
iconModifier = LargeRelayIconModifier,
|
||||
)
|
||||
}
|
||||
|
||||
+2
-2
@@ -21,9 +21,9 @@
|
||||
package com.vitorpamplona.amethyst.ui.screen.loggedIn.relays.common
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import com.vitorpamplona.amethyst.Amethyst
|
||||
import com.vitorpamplona.amethyst.model.User
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.client.stats.RelayStat
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.client.stats.RelayStats
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl
|
||||
|
||||
@Immutable
|
||||
@@ -41,6 +41,6 @@ fun relaySetupInfoBuilder(
|
||||
): BasicRelaySetupInfo =
|
||||
BasicRelaySetupInfo(
|
||||
relay = normalized,
|
||||
relayStat = RelayStats.get(normalized),
|
||||
relayStat = Amethyst.instance.relayStats.get(normalized),
|
||||
forcesTor = forcesTor,
|
||||
)
|
||||
|
||||
+1
-2
@@ -24,7 +24,6 @@ import com.vitorpamplona.amethyst.Amethyst
|
||||
import com.vitorpamplona.amethyst.model.LocalCache
|
||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.relays.common.BasicRelaySetupInfo
|
||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.relays.common.BasicRelaySetupInfoModel
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.client.stats.RelayStats
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl
|
||||
|
||||
class ConnectedRelayListViewModel : BasicRelaySetupInfoModel() {
|
||||
@@ -35,7 +34,7 @@ class ConnectedRelayListViewModel : BasicRelaySetupInfoModel() {
|
||||
.map {
|
||||
BasicRelaySetupInfo(
|
||||
relay = it,
|
||||
relayStat = RelayStats.get(it),
|
||||
relayStat = Amethyst.instance.relayStats.get(it),
|
||||
forcesTor =
|
||||
Amethyst.instance.torEvaluatorFlow.flow.value
|
||||
.useTor(it),
|
||||
|
||||
+4
-1
@@ -21,9 +21,12 @@
|
||||
package com.vitorpamplona.quartz.nip01Core.relay.client.stats
|
||||
|
||||
import androidx.collection.LruCache
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl
|
||||
|
||||
object RelayStats {
|
||||
class RelayStats(
|
||||
val client: INostrClient,
|
||||
) {
|
||||
private val innerCache =
|
||||
object : LruCache<NormalizedRelayUrl, RelayStat>(1000) {
|
||||
override fun create(key: NormalizedRelayUrl): RelayStat = RelayStat()
|
||||
|
||||
Reference in New Issue
Block a user