Adds k-tag to the Deletion events.
This commit is contained in:
@@ -859,10 +859,11 @@ class Account(
|
|||||||
suspend fun delete(notes: List<Note>) {
|
suspend fun delete(notes: List<Note>) {
|
||||||
if (!isWriteable()) return
|
if (!isWriteable()) return
|
||||||
|
|
||||||
val myNotes = notes.filter { it.author == userProfile() }.mapNotNull { it.event?.id() }
|
val myEvents = notes.filter { it.author == userProfile() }
|
||||||
|
val myNoteVersions = myEvents.mapNotNull { it.event as? Event }
|
||||||
|
|
||||||
if (myNotes.isNotEmpty()) {
|
if (myNoteVersions.isNotEmpty()) {
|
||||||
DeletionEvent.create(myNotes, signer) {
|
DeletionEvent.create(myNoteVersions, signer) {
|
||||||
Client.send(it)
|
Client.send(it)
|
||||||
LocalCache.justConsume(it, null)
|
LocalCache.justConsume(it, null)
|
||||||
}
|
}
|
||||||
@@ -1891,7 +1892,7 @@ class Account(
|
|||||||
Client.send(event)
|
Client.send(event)
|
||||||
LocalCache.justConsume(event, null)
|
LocalCache.justConsume(event, null)
|
||||||
|
|
||||||
DeletionEvent.create(listOf(event.id), signer) { event2 ->
|
DeletionEvent.createForVersionOnly(listOf(event), signer) { event2 ->
|
||||||
Client.send(event2)
|
Client.send(event2)
|
||||||
LocalCache.justConsume(event2, null)
|
LocalCache.justConsume(event2, null)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,22 +34,59 @@ class DeletionEvent(
|
|||||||
content: String,
|
content: String,
|
||||||
sig: HexKey,
|
sig: HexKey,
|
||||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||||
fun deleteEvents() = tags.map { it[1] }
|
fun deleteEvents() = taggedEvents()
|
||||||
|
|
||||||
|
fun deleteAddresses() = taggedAddresses()
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val KIND = 5
|
const val KIND = 5
|
||||||
const val ALT = "Deletion event"
|
const val ALT = "Deletion event"
|
||||||
|
|
||||||
fun create(
|
fun create(
|
||||||
deleteEvents: List<String>,
|
deleteEvents: List<Event>,
|
||||||
signer: NostrSigner,
|
signer: NostrSigner,
|
||||||
createdAt: Long = TimeUtils.now(),
|
createdAt: Long = TimeUtils.now(),
|
||||||
onReady: (DeletionEvent) -> Unit,
|
onReady: (DeletionEvent) -> Unit,
|
||||||
) {
|
) {
|
||||||
val content = ""
|
val content = ""
|
||||||
val tags =
|
val tags = mutableListOf<Array<String>>()
|
||||||
deleteEvents.map { arrayOf("e", it) }.plusElement(arrayOf("alt", ALT)).toTypedArray()
|
|
||||||
signer.sign(createdAt, KIND, tags, content, onReady)
|
val kinds =
|
||||||
|
deleteEvents.mapTo(HashSet()) {
|
||||||
|
"${it.kind}"
|
||||||
|
}.map {
|
||||||
|
arrayOf("k", it)
|
||||||
|
}
|
||||||
|
|
||||||
|
tags.addAll(deleteEvents.map { arrayOf("e", it.id) })
|
||||||
|
tags.addAll(deleteEvents.mapNotNull { if (it is AddressableEvent) arrayOf("a", it.address().toTag()) else null })
|
||||||
|
tags.addAll(kinds)
|
||||||
|
tags.add(arrayOf("alt", ALT))
|
||||||
|
|
||||||
|
signer.sign(createdAt, KIND, tags.toTypedArray(), content, onReady)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun createForVersionOnly(
|
||||||
|
deleteEvents: List<Event>,
|
||||||
|
signer: NostrSigner,
|
||||||
|
createdAt: Long = TimeUtils.now(),
|
||||||
|
onReady: (DeletionEvent) -> Unit,
|
||||||
|
) {
|
||||||
|
val content = ""
|
||||||
|
val tags = mutableListOf<Array<String>>()
|
||||||
|
|
||||||
|
val kinds =
|
||||||
|
deleteEvents.mapTo(HashSet()) {
|
||||||
|
"${it.kind}"
|
||||||
|
}.map {
|
||||||
|
arrayOf("k", it)
|
||||||
|
}
|
||||||
|
|
||||||
|
tags.addAll(deleteEvents.map { arrayOf("e", it.id) })
|
||||||
|
tags.addAll(kinds)
|
||||||
|
tags.add(arrayOf("alt", ALT))
|
||||||
|
|
||||||
|
signer.sign(createdAt, KIND, tags.toTypedArray(), content, onReady)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user