From 3adac7f63cdfaae83477c431d04063a7d932e50e Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Tue, 20 May 2025 09:46:44 -0400 Subject: [PATCH] chore: use display event ID as token position cache key to prevent out-of-date positions being used to render edited messages (#2844) --- lib/pangea/events/utils/message_text_util.dart | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/pangea/events/utils/message_text_util.dart b/lib/pangea/events/utils/message_text_util.dart index edc2c2544..25c18c035 100644 --- a/lib/pangea/events/utils/message_text_util.dart +++ b/lib/pangea/events/utils/message_text_util.dart @@ -49,8 +49,12 @@ class MessageTextUtil { return null; } - if (_tokenPositionsCache.containsKey(pangeaMessageEvent.eventId)) { - return _tokenPositionsCache[pangeaMessageEvent.eventId]! + final cacheKey = pangeaMessageEvent.event + .getDisplayEvent(pangeaMessageEvent.timeline) + .eventId; + + if (_tokenPositionsCache.containsKey(cacheKey)) { + return _tokenPositionsCache[cacheKey]! .map( (t) => TokenPosition( start: t.start, @@ -154,7 +158,7 @@ class MessageTextUtil { continue; } - _tokenPositionsCache[pangeaMessageEvent.eventId] = tokenPositions; + _tokenPositionsCache[cacheKey] = tokenPositions; return tokenPositions; } catch (err, s) {