Release 3.36.1
This commit is contained in:
parent
93e2237fb9
commit
6cbbd7032a
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue