Fix urls when shortened
This commit is contained in:
parent
0affe452c7
commit
6db3478493
|
@ -31,6 +31,7 @@ import androidx.core.content.ContextCompat;
|
|||
import android.text.Html;
|
||||
import android.text.Spannable;
|
||||
import android.text.SpannableString;
|
||||
import android.text.SpannableStringBuilder;
|
||||
import android.text.Spanned;
|
||||
import android.text.TextPaint;
|
||||
import android.text.TextUtils;
|
||||
|
@ -577,6 +578,7 @@ public class Status implements Parcelable{
|
|||
|
||||
Pattern aLink = Pattern.compile("<a href=\"([^\"]*)\"[^>]*(((?!<\\/a).)*)<\\/a>");
|
||||
Matcher matcherALink = aLink.matcher(content);
|
||||
int count = 0;
|
||||
while (matcherALink.find()){
|
||||
String beforemodification;
|
||||
String urlText = matcherALink.group(2);
|
||||
|
@ -592,7 +594,8 @@ public class Status implements Parcelable{
|
|||
urlText = urlText.replace("http://", "").replace("https://", "").replace("www.", "");
|
||||
if (urlText.length() > 31) {
|
||||
urlText = urlText.substring(0, 30);
|
||||
urlText += '…';
|
||||
urlText += "…"+count;
|
||||
count++;
|
||||
}
|
||||
}
|
||||
content = content.replace(beforemodification, urlText);
|
||||
|
@ -607,7 +610,6 @@ public class Status implements Parcelable{
|
|||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
|
||||
spannableStringCW = new SpannableString(Html.fromHtml(spoilerText, Html.FROM_HTML_MODE_LEGACY));
|
||||
else
|
||||
//noinspection deprecation
|
||||
spannableStringCW = new SpannableString(Html.fromHtml(spoilerText));
|
||||
if( spannableStringContent.length() > 0)
|
||||
status.setContentSpan(treatment(context, spannableStringContent, status));
|
||||
|
@ -629,7 +631,6 @@ public class Status implements Parcelable{
|
|||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
|
||||
spannableStringTranslated = new SpannableString(Html.fromHtml(status.getContentTranslated(), Html.FROM_HTML_MODE_LEGACY));
|
||||
else
|
||||
//noinspection deprecation
|
||||
spannableStringTranslated = new SpannableString(Html.fromHtml(status.getContentTranslated()));
|
||||
|
||||
status.setContentSpanTranslated(treatment(context, spannableStringTranslated, status));
|
||||
|
@ -866,7 +867,6 @@ public class Status implements Parcelable{
|
|||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
|
||||
key = new SpannableString(Html.fromHtml(matcher.group(2), Html.FROM_HTML_MODE_LEGACY)).toString();
|
||||
else
|
||||
//noinspection deprecation
|
||||
key = new SpannableString(Html.fromHtml(matcher.group(2))).toString();
|
||||
key = key.substring(1);
|
||||
if( !key.startsWith("#") && !key.startsWith("@") && !key.trim().equals("") && !matcher.group(1).contains("search?tag=")) {
|
||||
|
@ -911,7 +911,6 @@ public class Status implements Parcelable{
|
|||
int matchStart = matcherALink.start();
|
||||
int matchEnd = matcherALink.end();
|
||||
final String url = spannableString.toString().substring(matcherALink.start(1), matcherALink.end(1));
|
||||
|
||||
if( matchEnd <= spannableString.toString().length() && matchEnd >= matchStart)
|
||||
spannableString.setSpan(new ClickableSpan() {
|
||||
@Override
|
||||
|
@ -941,7 +940,6 @@ public class Status implements Parcelable{
|
|||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
|
||||
spannableStringT = new SpannableString(Html.fromHtml(spannableString.toString().replaceAll("^<p>","").replaceAll("<p>","<br/><br/>").replaceAll("</p>","").replaceAll("<br />","<br/>").replaceAll("[\\s]{2}"," "), Html.FROM_HTML_MODE_LEGACY));
|
||||
else
|
||||
//noinspection deprecation
|
||||
spannableStringT = new SpannableString(Html.fromHtml(spannableString.toString().replaceAll("^<p>","").replaceAll("<p>","<br/><br/>").replaceAll("</p>","").replaceAll("<br />","<br/>").replaceAll("[\\s]{2}"," ")));
|
||||
|
||||
URLSpan[] spans = spannableStringT.getSpans(0, spannableStringT.length(), URLSpan.class);
|
||||
|
@ -1014,10 +1012,16 @@ public class Status implements Parcelable{
|
|||
String url = (String) pair.getValue();
|
||||
if (spannableStringT.toString().toLowerCase().contains(key.toLowerCase())) {
|
||||
//Accounts can be mentioned several times so we have to loop
|
||||
for(int startPosition = -1 ; (startPosition = spannableStringT.toString().toLowerCase().indexOf(key.toLowerCase(), startPosition + 1)) != -1 ; startPosition++){
|
||||
|
||||
int startPosition = spannableStringT.toString().toLowerCase().indexOf(key.toLowerCase());
|
||||
int endPosition = startPosition + key.length();
|
||||
|
||||
if( key.contains("…") && !key.endsWith("…")) {
|
||||
key = key.split("…")[0]+"…";
|
||||
SpannableStringBuilder ssb = new SpannableStringBuilder();
|
||||
ssb.append(spannableStringT, 0, spannableStringT.length());
|
||||
ssb.replace(startPosition,endPosition, key);
|
||||
spannableStringT = SpannableString.valueOf(ssb);
|
||||
endPosition = startPosition + key.length();
|
||||
}
|
||||
if( endPosition <= spannableStringT.toString().length() && endPosition >= startPosition) {
|
||||
spannableStringT.setSpan(new ClickableSpan() {
|
||||
@Override
|
||||
|
@ -1071,7 +1075,6 @@ public class Status implements Parcelable{
|
|||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue