mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-04-12 05:49:30 +02:00
adds a native map for tags in the Event class to avoid creating sublists before mapping tags
This commit is contained in:
parent
cafad6a003
commit
31e8782b1a
@ -800,7 +800,7 @@ object LocalCache {
|
||||
.mapNotNull { checkGetOrCreateNote(it) }
|
||||
|
||||
is DraftEvent -> {
|
||||
event.taggedEvents().mapNotNull { checkGetOrCreateNote(it) } + event.taggedAddresses().mapNotNull { checkGetOrCreateAddressableNote(it.toTag()) }
|
||||
event.mapTaggedEvent { checkGetOrCreateNote(it) } + event.mapTaggedAddress { checkGetOrCreateAddressableNote(it) }
|
||||
}
|
||||
|
||||
else -> emptyList<Note>()
|
||||
|
@ -88,12 +88,31 @@ 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 forEachTaggedEvent(onEach: (eventId: HexKey) -> Unit) = forEachTagged("e", onEach)
|
||||
|
||||
private fun forEachTagged(
|
||||
tagName: String,
|
||||
onEach: (eventId: HexKey) -> Unit,
|
||||
) = tags.forEach {
|
||||
if (it.size > 1 && it[0] == tagName) {
|
||||
onEach(it[1])
|
||||
}
|
||||
}
|
||||
|
||||
override fun <R> mapTaggedEvent(map: (eventId: HexKey) -> R) = mapTagged("e", map)
|
||||
|
||||
override fun <R> mapTaggedAddress(map: (address: String) -> R) = mapTagged("a", map)
|
||||
|
||||
private fun <R> mapTagged(
|
||||
tagName: String,
|
||||
map: (eventId: HexKey) -> R,
|
||||
) = tags.mapNotNull {
|
||||
if (it.size > 1 && it[0] == tagName) {
|
||||
map(it[1])
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
override fun taggedUsers() = tags.filter { it.size > 1 && it[0] == "p" }.map { it[1] }
|
||||
|
||||
|
@ -119,6 +119,10 @@ interface EventInterface {
|
||||
|
||||
fun forEachTaggedEvent(onEach: (eventId: HexKey) -> Unit)
|
||||
|
||||
fun <R> mapTaggedEvent(map: (eventId: HexKey) -> R): List<R>
|
||||
|
||||
fun <R> mapTaggedAddress(map: (address: String) -> R): List<R>
|
||||
|
||||
fun taggedAddresses(): List<ATag>
|
||||
|
||||
fun taggedUsers(): List<HexKey>
|
||||
|
Loading…
x
Reference in New Issue
Block a user