diff --git a/app/src/main/assets/changelogs/373.txt b/app/src/main/assets/changelogs/373.txt index 5218a02f9..08dbc8083 100644 --- a/app/src/main/assets/changelogs/373.txt +++ b/app/src/main/assets/changelogs/373.txt @@ -1,4 +1,7 @@ changed: - Increase media description length to 1500 chars + Fixed: -- Some issue with custom emoji \ No newline at end of file +- Remove extra spaces at the bottom of messages +- Some issue with custom emoji +- Some crashes \ No newline at end of file diff --git a/app/src/main/java/app/fedilab/android/client/Entities/Status.java b/app/src/main/java/app/fedilab/android/client/Entities/Status.java index 0dc347d46..3cc4e0553 100644 --- a/app/src/main/java/app/fedilab/android/client/Entities/Status.java +++ b/app/src/main/java/app/fedilab/android/client/Entities/Status.java @@ -496,11 +496,11 @@ public class Status implements Parcelable { } } - SpannableString spannableStringT; + SpannableStringBuilder spannableStringT; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) - spannableStringT = new SpannableString(Html.fromHtml(spannableString.toString().replaceAll("[\\s]{2}", "  "), Html.FROM_HTML_MODE_LEGACY)); + spannableStringT = new SpannableStringBuilder(Html.fromHtml(spannableString.toString().replaceAll("[\\s]{2}", "  "), Html.FROM_HTML_MODE_LEGACY)); else - spannableStringT = new SpannableString(Html.fromHtml(spannableString.toString().replaceAll("[\\s]{2}", "  "))); + spannableStringT = new SpannableStringBuilder(Html.fromHtml(spannableString.toString().replaceAll("[\\s]{2}", "  "))); replaceQuoteSpans(context, spannableStringT); URLSpan[] spans = spannableStringT.getSpans(0, spannableStringT.length(), URLSpan.class); for (URLSpan span : spans) { @@ -565,7 +565,7 @@ public class Status implements Parcelable { if (ssb.length() >= endPosition) { ssb.replace(startPosition, endPosition, key); } - spannableStringT = SpannableString.valueOf(ssb); + spannableStringT = SpannableStringBuilder.valueOf(ssb); endPosition = startPosition + key.length(); } //Accounts can be mentioned several times so we have to loop @@ -616,7 +616,7 @@ public class Status implements Parcelable { if (ssb.length() >= endPosition) { ssb.replace(startPosition, endPosition, key); } - spannableStringT = SpannableString.valueOf(ssb); + spannableStringT = SpannableStringBuilder.valueOf(ssb); endPosition = startPosition + key.length(); } if (endPosition <= spannableStringT.toString().length() && endPosition >= startPosition) { @@ -835,7 +835,17 @@ public class Status implements Parcelable { } } - return spannableStringT; + + Pattern carriagePattern = Pattern.compile("(\\n)+$"); + matcher = carriagePattern.matcher(spannableStringT); + while (matcher.find()) { + int matchStart = matcher.start(); + int matchEnd = matcher.end(); + if (matchStart >= 0 && matchEnd <= spannableStringT.toString().length() && matchEnd >= matchStart) { + spannableStringT.delete(matchStart, matchEnd); + } + } + return SpannableString.valueOf(spannableStringT); } public static void transformTranslation(Context context, Status status) { diff --git a/app/src/main/java/app/fedilab/android/drawers/CustomEmojiAdapter.java b/app/src/main/java/app/fedilab/android/drawers/CustomEmojiAdapter.java index e2209e0d1..a8ddbf85a 100644 --- a/app/src/main/java/app/fedilab/android/drawers/CustomEmojiAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/CustomEmojiAdapter.java @@ -88,7 +88,7 @@ public class CustomEmojiAdapter extends BaseAdapter { @Override public void onResourceReady(@NonNull Drawable resource, @Nullable Transition transition) { emoji.setDrawable(resource); - if( imageView != null && emoji.getDrawable() != null) { + if (imageView != null && emoji.getDrawable() != null) { imageView.setImageDrawable(emoji.getDrawable()); } }