From 00681c3660809887644c5abfaf018a5e46b06547 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Tue, 27 Nov 2018 11:48:58 -0800 Subject: [PATCH] Fix TouchEvents on text after state changes Summary: This diff fixes a bug that produces TouchEvents on text to stop working after a react state has happened. An easy way to reproduce this is opening a YellowBox, minimizing it and trying to open it again Reviewed By: shergin Differential Revision: D13198663 fbshipit-source-id: 19b08818bbff8014ab8227b3db1119edc4193389 --- .../facebook/react/views/text/TextLayoutManager.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java index 010b2df58eb945..5ff6c26dc4ed30 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java @@ -50,7 +50,7 @@ public class TextLayoutManager { private static final int spannableCacheSize = 100; private static final Object sSpannableCacheLock = new Object(); - private static LruCache sSpannableCache = new LruCache<>(spannableCacheSize); + private static LruCache sSpannableCache = new LruCache<>(spannableCacheSize); private static void buildSpannableFromFragment( Context context, @@ -159,12 +159,11 @@ protected static Spannable getOrCreateSpannableForText( Context context, ReadableMap attributedString) { - Double hash = attributedString.getDouble("hash"); Spannable preparedSpannableText; - + String attributedStringPayload = attributedString.toString(); synchronized (sSpannableCacheLock) { - preparedSpannableText = sSpannableCache.get(hash); - //TODO: T31905686 the hash does not guarantee equality of texts + preparedSpannableText = sSpannableCache.get(attributedStringPayload); + //TODO: T31905686 implement proper equality of attributedStrings if (preparedSpannableText != null) { return preparedSpannableText; } @@ -172,7 +171,7 @@ protected static Spannable getOrCreateSpannableForText( preparedSpannableText = createSpannableFromAttributedString(context, attributedString); synchronized (sSpannableCacheLock) { - sSpannableCache.put(hash, preparedSpannableText); + sSpannableCache.put(attributedStringPayload, preparedSpannableText); } return preparedSpannableText; }