Release 3.36.1

This commit is contained in:
Thomas 2020-07-09 11:43:55 +02:00
parent 93e2237fb9
commit 6cbbd7032a
3 changed files with 44 additions and 40 deletions

View File

@ -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

View File

@ -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

View File

@ -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<Drawable>() {
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> 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<Drawable>() {
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> 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) {
}
});
}
});
}
}
}
}