diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/tags/events/ETag.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/tags/events/ETag.kt index 3e35539c6..a11296052 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/tags/events/ETag.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/tags/events/ETag.kt @@ -66,6 +66,11 @@ data class ETag( eventId: HexKey, ) = tag.has(1) && tag[0] == TAG_NAME && tag[1] == eventId + fun isTagged( + tag: Array, + eventIds: Set, + ) = tag.has(1) && tag[0] == TAG_NAME && tag[1] in eventIds + fun parse(tag: Array): ETag? { ensure(tag.has(1)) { return null } ensure(tag[0] == TAG_NAME) { return null } diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/tags/events/EventExt.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/tags/events/EventExt.kt index c63fa2f26..35d9ca937 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/tags/events/EventExt.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/tags/events/EventExt.kt @@ -34,3 +34,5 @@ fun Event.taggedEventIds() = tags.taggedEventIds() fun Event.firstTaggedEvent() = tags.firstTaggedEvent() fun Event.isTaggedEvent(idHex: String) = tags.isTaggedEvent(idHex) + +fun Event.isTaggedEvents(idHexes: Set) = tags.isTaggedEvents(idHexes) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/tags/events/TagArrayExt.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/tags/events/TagArrayExt.kt index a4be2a93e..cc8bee23f 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/tags/events/TagArrayExt.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/tags/events/TagArrayExt.kt @@ -36,4 +36,6 @@ fun TagArray.taggedEventIds() = this.mapNotNull(ETag::parseId) fun TagArray.firstTaggedEvent() = this.firstNotNullOfOrNull(ETag::parse) -fun TagArray.isTaggedEvent(idHex: String) = this.any(ETag::isTagged, idHex) +fun TagArray.isTaggedEvent(idHex: HexKey) = this.any(ETag::isTagged, idHex) + +fun TagArray.isTaggedEvents(idHexes: Set) = this.any(ETag::isTagged, idHexes) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip09Deletions/DeletionEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip09Deletions/DeletionEvent.kt index 4d313572d..86a2ae7e4 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip09Deletions/DeletionEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip09Deletions/DeletionEvent.kt @@ -30,9 +30,11 @@ import com.vitorpamplona.quartz.nip01Core.hints.EventHintProvider import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate import com.vitorpamplona.quartz.nip01Core.tags.aTag.ATag import com.vitorpamplona.quartz.nip01Core.tags.aTag.aTag +import com.vitorpamplona.quartz.nip01Core.tags.aTag.isTaggedAddressableKind import com.vitorpamplona.quartz.nip01Core.tags.aTag.taggedAddresses import com.vitorpamplona.quartz.nip01Core.tags.events.ETag import com.vitorpamplona.quartz.nip01Core.tags.events.eTag +import com.vitorpamplona.quartz.nip01Core.tags.events.isTaggedEvents import com.vitorpamplona.quartz.nip01Core.tags.events.taggedEventIds import com.vitorpamplona.quartz.nip01Core.tags.events.taggedEvents import com.vitorpamplona.quartz.nip01Core.tags.kinds.kinds @@ -65,6 +67,10 @@ class DeletionEvent( fun deleteEventIds() = taggedEventIds() + fun deletesAnyEventIn(eventIds: Set) = isTaggedEvents(eventIds) + + fun deleteAddressesWithKind(kind: Int) = isTaggedAddressableKind(kind) + fun deleteAddresses() = taggedAddresses() fun deleteAddressIds() = tags.mapNotNull(ATag::parseAddressId)