Spam count per relay.
This commit is contained in:
@@ -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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user