Spam count per relay.

This commit is contained in:
Vitor Pamplona
2023-02-24 16:36:02 -05:00
parent 3e7d2a7b68
commit 951a4be615
5 changed files with 46 additions and 6 deletions
@@ -140,7 +140,12 @@ object LocalCache {
fun consume(event: TextNoteEvent, relay: Relay? = null) { fun consume(event: TextNoteEvent, relay: Relay? = null) {
if (antiSpam.isSpam(event)) return if (antiSpam.isSpam(event)) {
relay?.let {
it.spamCounter++
}
return
}
val note = getOrCreateNote(event.id.toHex()) val note = getOrCreateNote(event.id.toHex())
val author = getOrCreateUser(event.pubKey.toHexKey()) val author = getOrCreateUser(event.pubKey.toHexKey())
@@ -426,7 +431,12 @@ object LocalCache {
fun consume(event: ChannelMessageEvent, relay: Relay?) { fun consume(event: ChannelMessageEvent, relay: Relay?) {
if (event.channel.isNullOrBlank()) return if (event.channel.isNullOrBlank()) return
if (antiSpam.isSpam(event)) return if (antiSpam.isSpam(event)) {
relay?.let {
it.spamCounter++
}
return
}
val channel = checkGetOrCreateChannel(event.channel) ?: return val channel = checkGetOrCreateChannel(event.channel) ?: return
@@ -9,5 +9,6 @@ data class RelaySetupInfo(
val errorCount: Int = 0, val errorCount: Int = 0,
val downloadCount: Int = 0, val downloadCount: Int = 0,
val uploadCount: Int = 0, val uploadCount: Int = 0,
val spamCount: Int = 0,
val feedTypes: Set<FeedType> val feedTypes: Set<FeedType>
) )
@@ -31,6 +31,7 @@ class Relay(
private var isReady: Boolean = false private var isReady: Boolean = false
var eventDownloadCounter = 0 var eventDownloadCounter = 0
var spamCounter = 0
var eventUploadCounter = 0 var eventUploadCounter = 0
var errorCounter = 0 var errorCounter = 0
var ping: Long? = null var ping: Long? = null
@@ -23,6 +23,7 @@ import androidx.compose.material.Surface
import androidx.compose.material.Text import androidx.compose.material.Text
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Cancel import androidx.compose.material.icons.filled.Cancel
import androidx.compose.material.icons.filled.DeleteSweep
import androidx.compose.material.icons.filled.Download import androidx.compose.material.icons.filled.Download
import androidx.compose.material.icons.filled.Groups import androidx.compose.material.icons.filled.Groups
import androidx.compose.material.icons.filled.Public import androidx.compose.material.icons.filled.Public
@@ -148,7 +149,7 @@ fun ServerConfigHeader() {
} }
} }
Column(Modifier.weight(1f)) { Column(Modifier.weight(1.4f)) {
Row(verticalAlignment = Alignment.CenterVertically) { Row(verticalAlignment = Alignment.CenterVertically) {
Spacer(modifier = Modifier.size(25.dp)) Spacer(modifier = Modifier.size(25.dp))
@@ -181,6 +182,16 @@ fun ServerConfigHeader() {
) )
Spacer(modifier = Modifier.size(5.dp)) Spacer(modifier = Modifier.size(5.dp))
Text(
text = "Spam",
maxLines = 1,
fontSize = 14.sp,
modifier = Modifier.weight(1f),
color = MaterialTheme.colors.onSurface.copy(alpha = 0.32f),
)
Spacer(modifier = Modifier.size(2.dp))
} }
} }
} }
@@ -290,7 +301,7 @@ fun ServerConfig(
} }
} }
Column(Modifier.weight(1f)) { Column(Modifier.weight(1.4f)) {
Row(verticalAlignment = Alignment.CenterVertically) { Row(verticalAlignment = Alignment.CenterVertically) {
IconButton( IconButton(
modifier = Modifier.size(30.dp), modifier = Modifier.size(30.dp),
@@ -350,6 +361,21 @@ fun ServerConfig(
modifier = Modifier.weight(1f), modifier = Modifier.weight(1f),
color = MaterialTheme.colors.onSurface.copy(alpha = 0.32f), color = MaterialTheme.colors.onSurface.copy(alpha = 0.32f),
) )
Icon(
imageVector = Icons.Default.DeleteSweep,
null,
modifier = Modifier.padding(horizontal = 5.dp).size(15.dp),
tint = if (item.spamCount > 0) Color.Yellow else Color.Green
)
Text(
text = "${countToHumanReadable(item.spamCount)}",
maxLines = 1,
fontSize = 14.sp,
modifier = Modifier.weight(1f),
color = MaterialTheme.colors.onSurface.copy(alpha = 0.32f),
)
} }
} }
} }
@@ -42,8 +42,9 @@ class NewRelayListViewModel: ViewModel() {
val errorCounter = liveRelay?.errorCounter ?: 0 val errorCounter = liveRelay?.errorCounter ?: 0
val eventDownloadCounter = liveRelay?.eventDownloadCounter ?: 0 val eventDownloadCounter = liveRelay?.eventDownloadCounter ?: 0
val eventUploadCounter = liveRelay?.eventUploadCounter ?: 0 val eventUploadCounter = liveRelay?.eventUploadCounter ?: 0
val spamCounter = liveRelay?.spamCounter ?: 0
RelaySetupInfo(it.key, it.value.read, it.value.write, errorCounter, eventDownloadCounter, eventUploadCounter, localInfoFeedTypes) RelaySetupInfo(it.key, it.value.read, it.value.write, errorCounter, eventDownloadCounter, eventUploadCounter, spamCounter, localInfoFeedTypes)
}.sortedBy { it.downloadCount }.reversed() }.sortedBy { it.downloadCount }.reversed()
else else
account.localRelays.map { account.localRelays.map {
@@ -52,8 +53,9 @@ class NewRelayListViewModel: ViewModel() {
val errorCounter = liveRelay?.errorCounter ?: 0 val errorCounter = liveRelay?.errorCounter ?: 0
val eventDownloadCounter = liveRelay?.eventDownloadCounter ?: 0 val eventDownloadCounter = liveRelay?.eventDownloadCounter ?: 0
val eventUploadCounter = liveRelay?.eventUploadCounter ?: 0 val eventUploadCounter = liveRelay?.eventUploadCounter ?: 0
val spamCounter = liveRelay?.spamCounter ?: 0
RelaySetupInfo(it.url, it.read, it.write, errorCounter, eventDownloadCounter, eventUploadCounter, it.feedTypes) RelaySetupInfo(it.url, it.read, it.write, errorCounter, eventDownloadCounter, eventUploadCounter, spamCounter, it.feedTypes)
}.sortedBy { it.downloadCount }.reversed() }.sortedBy { it.downloadCount }.reversed()
} }
} }