diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java index 1070a6c3e..f11b58237 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java @@ -613,6 +613,49 @@ public class Account implements Parcelable { } + public void makeAccountNameEmoji(final Context context, final OnRetrieveEmojiAccountInterface listener, Account account){ + if( ((Activity)context).isFinishing() ) + return; + if( account.getDisplay_name() != null) + displayNameSpan = new SpannableString(account.getDisplay_name()); + final List emojis = account.getEmojis(); + if( emojis != null && emojis.size() > 0 ) { + final int[] i = {0}; + for (final Emojis emoji : emojis) { + try { + Glide.with(context) + .asBitmap() + .load(emoji.getUrl()) + .into(new SimpleTarget() { + @Override + public void onResourceReady(@NonNull Bitmap resource, Transition transition) { + final String targetedEmoji = ":" + emoji.getShortcode() + ":"; + if (displayNameSpan != null && displayNameSpan.toString().contains(targetedEmoji)) { + //emojis can be used several times so we have to loop + for (int startPosition = -1; (startPosition = displayNameSpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) { + final int endPosition = startPosition + targetedEmoji.length(); + if (endPosition <= displayNameSpan.toString().length() && endPosition >= startPosition) + displayNameSpan.setSpan( + new ImageSpan(context, + Bitmap.createScaledBitmap(resource, (int) Helper.convertDpToPixel(20, context), + (int) Helper.convertDpToPixel(20, context), false)), startPosition, + endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + } + } + i[0]++; + if (i[0] == (emojis.size())) { + if (listener != null) + listener.onRetrieveEmojiAccount(account); + } + } + }); + }catch (Exception ignored){} + + } + } + } + + public void makeEmojisAccount(final Context context, final OnRetrieveEmojiAccountInterface listener, Account account){ if( ((Activity)context).isFinishing() ) return; diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java index 61b9abb27..3df9d5f47 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java @@ -546,7 +546,7 @@ public class Status implements Parcelable{ final List emojis = status.getReblog() != null ? status.getReblog().getEmojis() : status.getEmojis(); final List emojisAccounts = status.getReblog() != null ?status.getReblog().getAccount().getEmojis():status.getAccount().getEmojis(); - status.getAccount().makeEmojisAccount(context, null, status.getAccount()); + status.getAccount().makeAccountNameEmoji(context, null, status.getAccount()); SpannableString displayNameSpan = status.getDisplayNameSpan(); SpannableString contentSpan = status.getContentSpan();