diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LargeSoftCacheAddressExt.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LargeSoftCacheAddressExt.kt index 5e1e70766..42a84bf44 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LargeSoftCacheAddressExt.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LargeSoftCacheAddressExt.kt @@ -45,6 +45,28 @@ fun kindEnd(kind: Int) = kindEnd(kind, END_KEY) val ACCEPT_ALL_FILTER = CacheCollectors.BiFilter { key, note -> true } +fun LargeSoftCache.filter( + kind: Int, + consumer: CacheCollectors.BiFilter = ACCEPT_ALL_FILTER, +): List = filter(kindStart(kind), kindEnd(kind), consumer) + +fun LargeSoftCache.filter( + kinds: List, + consumer: CacheCollectors.BiFilter = ACCEPT_ALL_FILTER, +): List { + val set = mutableSetOf() + kinds.forEach { + set.addAll(filter(kindStart(it), kindEnd(it), consumer)) + } + return set.toList() +} + +fun LargeSoftCache.filter( + kind: Int, + pubKey: HexKey, + consumer: CacheCollectors.BiFilter = ACCEPT_ALL_FILTER, +): List = filter(kindStart(kind, pubKey), kindEnd(kind, pubKey), consumer) + fun LargeSoftCache.filterIntoSet( kind: Int, consumer: CacheCollectors.BiFilter = ACCEPT_ALL_FILTER, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt index 6a4ea2a7a..246c65553 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt @@ -2126,18 +2126,7 @@ object LocalCache : ILocalCache { } } - fun getFollowSetNotesFor(user: User): List { - checkNotInMainThread() - - return addressables - .filter { _, note -> - val listEvent = note.event - ( - listEvent is PeopleListEvent && - user.pubkeyHex == listEvent.pubKey - ) - } - } + fun getPeopleListNotesFor(user: User): List = addressables.filter(PeopleListEvent.KIND, user.pubkeyHex) fun findStatusesForUser(user: User): ImmutableList { checkNotInMainThread() diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip51Lists/followSets/FollowSetState.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip51Lists/followSets/FollowSetState.kt index 0d1326c81..360ec05c0 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip51Lists/followSets/FollowSetState.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip51Lists/followSets/FollowSetState.kt @@ -47,7 +47,7 @@ class FollowSetState( suspend fun getFollowSetNotes() = withContext(Dispatchers.IO) { - val followSetNotes = LocalCache.getFollowSetNotesFor(user) + val followSetNotes = cache.getPeopleListNotesFor(user) return@withContext followSetNotes }