Refactoring the DVM codebase
Allows pull to refresh to request the job again.
This commit is contained in:
@@ -87,6 +87,13 @@ open class Event(
|
||||
|
||||
override fun hasTagWithContent(tagName: String) = tags.any { it.size > 1 && it[0] == tagName }
|
||||
|
||||
override fun forEachTaggedEvent(onEach: (eventId: HexKey) -> Unit) =
|
||||
tags.forEach {
|
||||
if (it.size > 1 && it[0] == "e") {
|
||||
onEach(it[1])
|
||||
}
|
||||
}
|
||||
|
||||
override fun taggedUsers() = tags.filter { it.size > 1 && it[0] == "p" }.map { it[1] }
|
||||
|
||||
override fun taggedEvents() = tags.filter { it.size > 1 && it[0] == "e" }.map { it[1] }
|
||||
|
||||
@@ -117,6 +117,8 @@ interface EventInterface {
|
||||
|
||||
fun hasTagWithContent(tagName: String): Boolean
|
||||
|
||||
fun forEachTaggedEvent(onEach: (eventId: HexKey) -> Unit)
|
||||
|
||||
fun taggedAddresses(): List<ATag>
|
||||
|
||||
fun taggedUsers(): List<HexKey>
|
||||
|
||||
+2
-2
@@ -40,14 +40,14 @@ class NIP90ContentDiscoveryRequestEvent(
|
||||
const val KIND = 5300
|
||||
|
||||
fun create(
|
||||
addressedDVM: String,
|
||||
dvmPublicKey: String,
|
||||
signer: NostrSigner,
|
||||
createdAt: Long = TimeUtils.now(),
|
||||
onReady: (NIP90ContentDiscoveryRequestEvent) -> Unit,
|
||||
) {
|
||||
val content = ""
|
||||
val tags = mutableListOf<Array<String>>()
|
||||
tags.add(arrayOf("p", addressedDVM))
|
||||
tags.add(arrayOf("p", dvmPublicKey))
|
||||
tags.add(arrayOf("alt", "NIP90 Content Discovery request"))
|
||||
tags.add(arrayOf("client", "Amethyst"))
|
||||
signer.sign(createdAt, KIND, tags.toTypedArray(), content, onReady)
|
||||
|
||||
+29
@@ -20,7 +20,9 @@
|
||||
*/
|
||||
package com.vitorpamplona.quartz.events
|
||||
|
||||
import android.util.Log
|
||||
import androidx.compose.runtime.Immutable
|
||||
import com.fasterxml.jackson.module.kotlin.readValue
|
||||
import com.vitorpamplona.quartz.encoders.HexKey
|
||||
import com.vitorpamplona.quartz.signers.NostrSigner
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
@@ -34,6 +36,33 @@ class NIP90ContentDiscoveryResponseEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
@Transient var events: List<HexKey>? = null
|
||||
|
||||
fun innerTags(): List<HexKey> {
|
||||
if (content.isEmpty()) {
|
||||
return listOf()
|
||||
}
|
||||
|
||||
events?.let {
|
||||
return it
|
||||
}
|
||||
|
||||
try {
|
||||
events =
|
||||
mapper.readValue<Array<Array<String>>>(content).mapNotNull {
|
||||
if (it.size > 1 && it[0] == "e") {
|
||||
it[1]
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
} catch (e: Throwable) {
|
||||
Log.w("GeneralList", "Error parsing the JSON ${e.message}")
|
||||
}
|
||||
|
||||
return events ?: listOf()
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val KIND = 6300
|
||||
const val ALT = "NIP90 Content Discovery reply"
|
||||
|
||||
Reference in New Issue
Block a user