From 6cbbd7032a9ba10b5257078439bb5846c67a4d89 Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 9 Jul 2020 11:43:55 +0200 Subject: [PATCH] Release 3.36.1 --- app/build.gradle | 4 +- app/src/main/assets/changelogs/375.txt | 1 + .../app/fedilab/android/helper/Helper.java | 79 ++++++++++--------- 3 files changed, 44 insertions(+), 40 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e3bad0031..c0269d71c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,8 +6,8 @@ android { defaultConfig { minSdkVersion 19 targetSdkVersion 29 - versionCode 374 - versionName "2.36.0" + versionCode 375 + versionName "2.36.1" multiDexEnabled true renderscriptTargetApi 28 as int renderscriptSupportModeEnabled true diff --git a/app/src/main/assets/changelogs/375.txt b/app/src/main/assets/changelogs/375.txt index dd6256ca4..9966180ef 100644 --- a/app/src/main/assets/changelogs/375.txt +++ b/app/src/main/assets/changelogs/375.txt @@ -8,6 +8,7 @@ changed: - Allow cross-account replies on followed instances Fixed: +- Crash when having custom emoji in display name - Crash when adding media - Remove extra spaces at the bottom of messages - Some issue with custom emoji diff --git a/app/src/main/java/app/fedilab/android/helper/Helper.java b/app/src/main/java/app/fedilab/android/helper/Helper.java index 688464427..1cf932db7 100644 --- a/app/src/main/java/app/fedilab/android/helper/Helper.java +++ b/app/src/main/java/app/fedilab/android/helper/Helper.java @@ -1972,8 +1972,9 @@ public class Helper { activity.finish(); //User is logged out to get a new token } else { - makeEmojis(activity, username, account.getDisplayNameSpan(), account.getEmojis()); + username.setText(String.format("@%s", account.getUsername() + "@" + account.getInstance())); + makeEmojis(activity, displayedName, account.getDisplayNameSpan(), account.getEmojis()); displayedName.setText(account.getDisplayNameSpan(), TextView.BufferType.SPANNABLE); loadGiF(activity, account, profilePicture); String urlHeader = !disableGif ? account.getHeader() : account.getHeader_static(); @@ -4411,51 +4412,53 @@ public class Helper { if (emojis != null && emojis.size() > 0) { for (final Emojis emoji : emojis) { - Glide.with(context) - .asDrawable() - .load(disableAnimatedEmoji ? emoji.getStatic_url() : emoji.getUrl()) - .into(new CustomTarget() { - @Override - public void onResourceReady(@NonNull Drawable resource, @Nullable Transition transition) { - final String targetedEmoji = ":" + emoji.getShortcode() + ":"; - if (contentSpan != null && contentSpan.toString().contains(targetedEmoji)) { - //emojis can be used several times so we have to loop - for (int startPosition = -1; (startPosition = contentSpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) { - final int endPosition = startPosition + targetedEmoji.length(); - if (endPosition <= contentSpan.toString().length() && endPosition >= startPosition) { - ImageSpan imageSpan; - try { - resource.setBounds(0, 0, (int) Helper.convertDpToPixel(20, context), (int) Helper.convertDpToPixel(20, context)); - resource.setVisible(true, true); - imageSpan = new ImageSpan(resource); - contentSpan.setSpan( - imageSpan, startPosition, - endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); - if (customTextView instanceof CustomTextView) { - ((CustomTextView) customTextView).setText(contentSpan, TextView.BufferType.SPANNABLE); - } else if (customTextView instanceof RadioButton) { - ((RadioButton) customTextView).setText(contentSpan, TextView.BufferType.SPANNABLE); - } else if (customTextView instanceof CheckBox) { - ((CheckBox) customTextView).setText(contentSpan, TextView.BufferType.SPANNABLE); - } else if (customTextView instanceof AppCompatTextView) { - ((AppCompatTextView) customTextView).setText(contentSpan, TextView.BufferType.SPANNABLE); - } else if (customTextView instanceof TextView) { - ((TextView) customTextView).setText(contentSpan, TextView.BufferType.SPANNABLE); - } + if (isValidContextForGlide(context)) { + Glide.with(context) + .asDrawable() + .load(disableAnimatedEmoji ? emoji.getStatic_url() : emoji.getUrl()) + .into(new CustomTarget() { + @Override + public void onResourceReady(@NonNull Drawable resource, @Nullable Transition transition) { + final String targetedEmoji = ":" + emoji.getShortcode() + ":"; + if (contentSpan != null && contentSpan.toString().contains(targetedEmoji)) { + //emojis can be used several times so we have to loop + for (int startPosition = -1; (startPosition = contentSpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) { + final int endPosition = startPosition + targetedEmoji.length(); + if (endPosition <= contentSpan.toString().length() && endPosition >= startPosition) { + ImageSpan imageSpan; + try { + resource.setBounds(0, 0, (int) Helper.convertDpToPixel(20, context), (int) Helper.convertDpToPixel(20, context)); + resource.setVisible(true, true); + imageSpan = new ImageSpan(resource); + contentSpan.setSpan( + imageSpan, startPosition, + endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + if (customTextView instanceof CustomTextView) { + ((CustomTextView) customTextView).setText(contentSpan, TextView.BufferType.SPANNABLE); + } else if (customTextView instanceof RadioButton) { + ((RadioButton) customTextView).setText(contentSpan, TextView.BufferType.SPANNABLE); + } else if (customTextView instanceof CheckBox) { + ((CheckBox) customTextView).setText(contentSpan, TextView.BufferType.SPANNABLE); + } else if (customTextView instanceof AppCompatTextView) { + ((AppCompatTextView) customTextView).setText(contentSpan, TextView.BufferType.SPANNABLE); + } else if (customTextView instanceof TextView) { + ((TextView) customTextView).setText(contentSpan, TextView.BufferType.SPANNABLE); + } - } catch (Exception ignored) { + } catch (Exception ignored) { + } } } } } - } - @Override - public void onLoadCleared(@Nullable Drawable placeholder) { + @Override + public void onLoadCleared(@Nullable Drawable placeholder) { - } - }); + } + }); + } } } }