From 3eb2fcbcb8e392a35bcc6cff8dc7165d264e9d67 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Thu, 12 Mar 2026 10:45:54 -0400 Subject: [PATCH] Solves the sorting contract crash by precaching all values before sorting. --- .../com/vitorpamplona/amethyst/model/LocalCache.kt | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) 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 787484503..750d10ae9 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt @@ -2298,12 +2298,17 @@ object LocalCache : ILocalCache, ICacheProvider { } } + val findsFollowing = finds.associateWith { forAccount?.isFollowing(it) == true } + val anyNameStartsWith = finds.associateWith { it.metadataOrNull()?.anyNameStartsWith(dualCase) == true } + val anyAddressStartsWith = finds.associateWith { it.metadataOrNull()?.anyAddressStartsWith(dualCase) == true } + val displayNames = finds.associateWith { it.toBestDisplayName().lowercase() } + return finds.sortedWith( compareBy( - { forAccount?.isFollowing(it) == false }, - { it.metadataOrNull()?.anyNameStartsWith(dualCase) == false }, - { it.metadataOrNull()?.anyAddressStartsWith(dualCase) == false }, - { it.toBestDisplayName().lowercase() }, + { findsFollowing[it] == false }, + { anyNameStartsWith[it] == false }, + { anyAddressStartsWith[it] == false }, + { displayNames[it] }, { it.pubkeyHex }, ), )