From 2c3a925cc98b48b7ea72d29dab94733a1354db08 Mon Sep 17 00:00:00 2001 From: tom79 Date: Sat, 21 Oct 2017 08:43:57 +0200 Subject: [PATCH] Improves emojis support --- .../gouv/etalab/mastodon/helper/Helper.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java index 613f649dd..48bdaabb9 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java @@ -1182,8 +1182,19 @@ public class Helper { } } - if( emoji != null && emojis.size() > 0 ) { + if( emojis != null && emojis.size() > 0 ) { final int[] i = {0}; + int emojiToSearch = 0; + for (final Emojis emoji : emojis) { + final String targetedEmoji = ":" + emoji.getShortcode() + ":"; + for(int startPosition = -1 ; (startPosition = spannableString.toString().indexOf(targetedEmoji, startPosition + 1)) != -1 ; startPosition++){ + emojiToSearch++; + } + } + ImageLoader imageLoader; + DisplayImageOptions options = new DisplayImageOptions.Builder().displayer(new SimpleBitmapDisplayer()).cacheInMemory(false) + .cacheOnDisk(true).resetViewBeforeLoading(true).build(); + imageLoader = ImageLoader.getInstance(); for (final Emojis emoji : emojis) { final String targetedEmoji = ":" + emoji.getShortcode() + ":"; if (spannableString.toString().contains(targetedEmoji)) { @@ -1191,9 +1202,9 @@ public class Helper { for(int startPosition = -1 ; (startPosition = spannableString.toString().indexOf(targetedEmoji, startPosition + 1)) != -1 ; startPosition++){ final int endPosition = startPosition + targetedEmoji.length(); final int finalStartPosition = startPosition; - ImageLoader imageLoader = ImageLoader.getInstance(); NonViewAware imageAware = new NonViewAware(new ImageSize(50, 50), ViewScaleType.CROP); - imageLoader.displayImage(emoji.getUrl(), imageAware, new SimpleImageLoadingListener() { + final int finalEmojiToSearch = emojiToSearch; + imageLoader.displayImage(emoji.getUrl(), imageAware, options, new SimpleImageLoadingListener() { @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { super.onLoadingComplete(imageUri, view, loadedImage); @@ -1203,11 +1214,12 @@ public class Helper { (int)Helper.convertDpToPixel(20, context), false)), finalStartPosition, endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); i[0]++; - if( i[0] == emojis.size()) + if( i[0] == finalEmojiToSearch) listener.onRetrieveEmoji(position, spannableString, false); } @Override public void onLoadingFailed(java.lang.String imageUri, android.view.View view, FailReason failReason) { + i[0]++; } }); }