Use LinkifyCompat.

This commit is contained in:
Isira Seneviratne 2022-09-06 09:20:52 +05:30
parent ebce4c5b7e
commit 464a646671
1 changed files with 19 additions and 32 deletions

View File

@ -12,6 +12,7 @@ import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.core.text.util.LinkifyCompat;
import org.schabi.newpipe.R; import org.schabi.newpipe.R;
import org.schabi.newpipe.error.ErrorUtil; import org.schabi.newpipe.error.ErrorUtil;
@ -27,7 +28,7 @@ import org.schabi.newpipe.util.PicassoHelper;
import org.schabi.newpipe.util.external_communication.ShareUtils; import org.schabi.newpipe.util.external_communication.ShareUtils;
import org.schabi.newpipe.util.external_communication.TimestampExtractor; import org.schabi.newpipe.util.external_communication.TimestampExtractor;
import java.util.regex.Matcher; import java.util.Objects;
public class CommentsMiniInfoItemHolder extends InfoItemHolder { public class CommentsMiniInfoItemHolder extends InfoItemHolder {
private static final String TAG = "CommentsMiniIIHolder"; private static final String TAG = "CommentsMiniIIHolder";
@ -39,7 +40,7 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder {
private final int commentVerticalPadding; private final int commentVerticalPadding;
private final RelativeLayout itemRoot; private final RelativeLayout itemRoot;
public final ImageView itemThumbnailView; private final ImageView itemThumbnailView;
private final TextView itemContentView; private final TextView itemContentView;
private final TextView itemLikesCountView; private final TextView itemLikesCountView;
private final TextView itemPublishedTime; private final TextView itemPublishedTime;
@ -47,27 +48,6 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder {
private String commentText; private String commentText;
private String streamUrl; private String streamUrl;
private final Linkify.TransformFilter timestampLink = new Linkify.TransformFilter() {
@Override
public String transformUrl(final Matcher match, final String url) {
try {
final TimestampExtractor.TimestampMatchDTO timestampMatchDTO =
TimestampExtractor.getTimestampFromMatcher(match, commentText);
if (timestampMatchDTO == null) {
return url;
}
return streamUrl + url.replace(
match.group(0),
"#timestamp=" + timestampMatchDTO.seconds());
} catch (final Exception ex) {
Log.e(TAG, "Unable to process url='" + url + "' as timestampLink", ex);
return url;
}
}
};
CommentsMiniInfoItemHolder(final InfoItemBuilder infoItemBuilder, final int layoutId, CommentsMiniInfoItemHolder(final InfoItemBuilder infoItemBuilder, final int layoutId,
final ViewGroup parent) { final ViewGroup parent) {
super(infoItemBuilder, layoutId, parent); super(infoItemBuilder, layoutId, parent);
@ -243,14 +223,21 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder {
} }
private void linkify() { private void linkify() {
Linkify.addLinks( LinkifyCompat.addLinks(itemContentView, Linkify.WEB_URLS);
itemContentView, LinkifyCompat.addLinks(itemContentView, TimestampExtractor.TIMESTAMPS_PATTERN, null, null,
Linkify.WEB_URLS); (match, url) -> {
Linkify.addLinks( try {
itemContentView, final var timestampMatch = TimestampExtractor
TimestampExtractor.TIMESTAMPS_PATTERN, .getTimestampFromMatcher(match, commentText);
null, if (timestampMatch == null) {
null, return url;
timestampLink); }
return streamUrl + url.replace(Objects.requireNonNull(match.group(0)),
"#timestamp=" + timestampMatch.seconds());
} catch (final Exception ex) {
Log.e(TAG, "Unable to process url='" + url + "' as timestampLink", ex);
return url;
}
});
} }
} }