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