From f26fa71e4910790d16f3c4d3203fd8ff60cbb36f Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sat, 1 Jun 2024 15:20:26 -0400 Subject: [PATCH] improves the speed of the kind filter for DVMs --- .../vitorpamplona/amethyst/ui/dal/DiscoverNIP89FeedFilter.kt | 4 ++-- .../com/vitorpamplona/quartz/events/AppDefinitionEvent.kt | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/DiscoverNIP89FeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/DiscoverNIP89FeedFilter.kt index f8a133cdd..d090e4e95 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/DiscoverNIP89FeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/DiscoverNIP89FeedFilter.kt @@ -53,7 +53,7 @@ open class DiscoverNIP89FeedFilter( val notes = LocalCache.addressables.filterIntoSet { _, it -> val noteEvent = it.event - noteEvent is AppDefinitionEvent && filterParams.match(noteEvent) && noteEvent.supportedKinds().contains(5300) && noteEvent.createdAt > TimeUtils.now() - lastAnnounced // && params.match(noteEvent) + noteEvent is AppDefinitionEvent && filterParams.match(noteEvent) && noteEvent.includeKind("5300") && noteEvent.createdAt > TimeUtils.now() - lastAnnounced // && params.match(noteEvent) } return sort(notes) @@ -77,7 +77,7 @@ open class DiscoverNIP89FeedFilter( return collection.filterTo(HashSet()) { val noteEvent = it.event - noteEvent is AppDefinitionEvent && filterParams.match(noteEvent) && noteEvent.supportedKinds().contains(5300) && noteEvent.createdAt > TimeUtils.now() - lastAnnounced // && params.match(noteEvent) + noteEvent is AppDefinitionEvent && filterParams.match(noteEvent) && noteEvent.includeKind("5300") && noteEvent.createdAt > TimeUtils.now() - lastAnnounced // && params.match(noteEvent) } } diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/events/AppDefinitionEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/events/AppDefinitionEvent.kt index f0cf4a7c3..dacc186b9 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/events/AppDefinitionEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/events/AppDefinitionEvent.kt @@ -147,6 +147,8 @@ class AppDefinitionEvent( .filter { it.size > 1 && it[0] == "k" } .mapNotNull { runCatching { it[1].toInt() }.getOrNull() } + fun includeKind(kind: String) = tags.any { it.size > 1 && it[0] == "k" && it[1] == kind } + fun publishedAt() = tags.firstOrNull { it.size > 1 && it[0] == "published_at" }?.get(1) companion object {