Skip to content

Commit 00681c3

Browse files
mdvaccafacebook-github-bot
authored andcommitted
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
1 parent d3f3bfa commit 00681c3

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java

+5-6
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public class TextLayoutManager {
5050
private static final int spannableCacheSize = 100;
5151

5252
private static final Object sSpannableCacheLock = new Object();
53-
private static LruCache<Double, Spannable> sSpannableCache = new LruCache<>(spannableCacheSize);
53+
private static LruCache<String, Spannable> sSpannableCache = new LruCache<>(spannableCacheSize);
5454

5555
private static void buildSpannableFromFragment(
5656
Context context,
@@ -159,20 +159,19 @@ protected static Spannable getOrCreateSpannableForText(
159159
Context context,
160160
ReadableMap attributedString) {
161161

162-
Double hash = attributedString.getDouble("hash");
163162
Spannable preparedSpannableText;
164-
163+
String attributedStringPayload = attributedString.toString();
165164
synchronized (sSpannableCacheLock) {
166-
preparedSpannableText = sSpannableCache.get(hash);
167-
//TODO: T31905686 the hash does not guarantee equality of texts
165+
preparedSpannableText = sSpannableCache.get(attributedStringPayload);
166+
//TODO: T31905686 implement proper equality of attributedStrings
168167
if (preparedSpannableText != null) {
169168
return preparedSpannableText;
170169
}
171170
}
172171

173172
preparedSpannableText = createSpannableFromAttributedString(context, attributedString);
174173
synchronized (sSpannableCacheLock) {
175-
sSpannableCache.put(hash, preparedSpannableText);
174+
sSpannableCache.put(attributedStringPayload, preparedSpannableText);
176175
}
177176
return preparedSpannableText;
178177
}

0 commit comments

Comments
 (0)