diff --git a/app/src/main/java/app/fedilab/android/helper/SpannableHelper.java b/app/src/main/java/app/fedilab/android/helper/SpannableHelper.java index 0c179c2d..412badb8 100644 --- a/app/src/main/java/app/fedilab/android/helper/SpannableHelper.java +++ b/app/src/main/java/app/fedilab/android/helper/SpannableHelper.java @@ -161,13 +161,15 @@ public class SpannableHelper { while (matcherALink.find()) { int matchStart = matcherALink.start() - offSetTruncate; int matchEnd = matchStart + matcherALink.group().length(); - //Get real URL - /*if (matcherALink.start(1) > matcherALink.end(1) || matcherALink.end() > content.length()) { - continue; - }*/ + final String url = content.toString().substring(matchStart, matchEnd); String newURL = Helper.transformURL(context, url); - content.replace(matchStart, matchEnd, newURL); + //If URL has been transformed + if (newURL.compareTo(url) != 0) { + content.replace(matchStart, matchEnd, newURL); + offSetTruncate += (newURL.length() - url.length()); + matchEnd = matchStart + newURL.length(); + } //Truncate URL if needed //TODO: add an option to disable truncated URLs String urlText = newURL; @@ -177,8 +179,6 @@ public class SpannableHelper { content.replace(matchStart, matchEnd, urlText); matchEnd = matchStart + 31; offSetTruncate += (newURL.length() - urlText.length()); - } else { - matchEnd = matchStart + (newURL.length()); } if (!urlText.startsWith("http")) { diff --git a/app/src/main/java/app/fedilab/android/ui/drawer/ConversationAdapter.java b/app/src/main/java/app/fedilab/android/ui/drawer/ConversationAdapter.java index bb56fdd4..ac1edb3c 100644 --- a/app/src/main/java/app/fedilab/android/ui/drawer/ConversationAdapter.java +++ b/app/src/main/java/app/fedilab/android/ui/drawer/ConversationAdapter.java @@ -19,6 +19,8 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.os.Handler; +import android.os.Looper; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; @@ -169,7 +171,9 @@ public class ConversationAdapter extends RecyclerView.Adapter holder.binding.statusContent.invalidate(); + mainHandler.post(myRunnable); } }, 100, 100); }