From 231af1d3d84cc2fc8c2445d7974b9fc1da5ba8db Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Wed, 31 Jul 2024 10:17:19 -0400 Subject: [PATCH] Fixes #993 --- .../amethyst/service/CachedRichTextParser.kt | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/CachedRichTextParser.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/CachedRichTextParser.kt index 8a7027a66..553b26d3e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/CachedRichTextParser.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/CachedRichTextParser.kt @@ -26,21 +26,35 @@ import com.vitorpamplona.amethyst.commons.richtext.RichTextViewerState import com.vitorpamplona.quartz.events.ImmutableListOfLists object CachedRichTextParser { - val richTextCache = LruCache(50) + val richTextCache = LruCache(50) - fun getCached(content: String): RichTextViewerState? = richTextCache[content] + // fun getCached(content: String): RichTextViewerState? = richTextCache[content] + + fun hashCodeCache( + content: String, + tags: ImmutableListOfLists, + callbackUri: String?, + ): Int { + var result = content.hashCode() + result = 31 * result + tags.lists.hashCode() + if (callbackUri != null) { + result = 31 * result + callbackUri.hashCode() + } + return result + } fun parseText( content: String, tags: ImmutableListOfLists, callbackUri: String? = null, ): RichTextViewerState { - val cached = richTextCache[content] + val key = hashCodeCache(content, tags, callbackUri) + val cached = richTextCache[key] return if (cached != null) { cached } else { val newUrls = RichTextParser().parseText(content, tags, callbackUri) - richTextCache.put(content, newUrls) + richTextCache.put(key, newUrls) newUrls } }