kopia lustrzana https://github.com/ryukoposting/Signal-Android
rodzic
1cfa5c31f2
commit
86227fbd67
|
@ -148,6 +148,8 @@ import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import kotlin.Unit;
|
import kotlin.Unit;
|
||||||
import kotlin.jvm.functions.Function1;
|
import kotlin.jvm.functions.Function1;
|
||||||
|
@ -175,6 +177,8 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
|
||||||
private static final long MAX_CLUSTERING_TIME_DIFF = TimeUnit.MINUTES.toMillis(3);
|
private static final long MAX_CLUSTERING_TIME_DIFF = TimeUnit.MINUTES.toMillis(3);
|
||||||
private static final int CONDENSED_MODE_MAX_LINES = 3;
|
private static final int CONDENSED_MODE_MAX_LINES = 3;
|
||||||
|
|
||||||
|
private static final Pattern NOT_URL_PATTERN = Pattern.compile("[^a-zA-Z0-9-._~:/?#\\[\\]@!$&'()\\*+,;=]");
|
||||||
|
|
||||||
private ConversationMessage conversationMessage;
|
private ConversationMessage conversationMessage;
|
||||||
private MessageRecord messageRecord;
|
private MessageRecord messageRecord;
|
||||||
private Optional<MessageRecord> nextMessageRecord;
|
private Optional<MessageRecord> nextMessageRecord;
|
||||||
|
@ -1444,12 +1448,26 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
|
||||||
boolean hasLinks = LinkifyCompat.addLinks(messageBody, shouldLinkifyAllLinks ? linkPattern : 0);
|
boolean hasLinks = LinkifyCompat.addLinks(messageBody, shouldLinkifyAllLinks ? linkPattern : 0);
|
||||||
|
|
||||||
if (hasLinks) {
|
if (hasLinks) {
|
||||||
Stream.of(messageBody.getSpans(0, messageBody.length(), URLSpan.class))
|
URLSpan[] urlSpans = messageBody.getSpans(0, messageBody.length(), URLSpan.class);
|
||||||
|
|
||||||
|
for (URLSpan urlSpan : urlSpans) {
|
||||||
|
int start = messageBody.getSpanStart(urlSpan);
|
||||||
|
int end = messageBody.getSpanEnd(urlSpan);
|
||||||
|
|
||||||
|
Matcher matcher = NOT_URL_PATTERN.matcher(messageBody.toString().substring(end));
|
||||||
|
if (matcher.find()) {
|
||||||
|
int newEnd = end + matcher.start();
|
||||||
|
URLSpan newSpan = new URLSpan(messageBody.toString().substring(start, newEnd));
|
||||||
|
messageBody.removeSpan(urlSpan);
|
||||||
|
messageBody.setSpan(newSpan, start, newEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Stream.of(urlSpans)
|
||||||
.filterNot(url -> LinkUtil.isLegalUrl(url.getURL()))
|
.filterNot(url -> LinkUtil.isLegalUrl(url.getURL()))
|
||||||
.forEach(messageBody::removeSpan);
|
.forEach(messageBody::removeSpan);
|
||||||
|
|
||||||
URLSpan[] urlSpans = messageBody.getSpans(0, messageBody.length(), URLSpan.class);
|
urlSpans = messageBody.getSpans(0, messageBody.length(), URLSpan.class);
|
||||||
|
|
||||||
for (URLSpan urlSpan : urlSpans) {
|
for (URLSpan urlSpan : urlSpans) {
|
||||||
int start = messageBody.getSpanStart(urlSpan);
|
int start = messageBody.getSpanStart(urlSpan);
|
||||||
int end = messageBody.getSpanEnd(urlSpan);
|
int end = messageBody.getSpanEnd(urlSpan);
|
||||||
|
|
Ładowanie…
Reference in New Issue