1
0
mirror of https://github.com/TeamNewPipe/NewPipe synced 2024-12-23 08:30:44 +00:00

Prevent NPEs when comment text is null

This commit is contained in:
pratyaksh1610 2023-02-10 11:10:43 +05:30 committed by Stypox
parent e0cb2892b8
commit 624ad6a47c
No known key found for this signature in database
GPG Key ID: 4BDF1B40A49FDD23

View File

@ -1,8 +1,9 @@
package org.schabi.newpipe.info_list.holder; package org.schabi.newpipe.info_list.holder;
import static android.text.TextUtils.isEmpty;
import android.graphics.Paint; import android.graphics.Paint;
import android.text.Layout; import android.text.Layout;
import android.text.TextUtils;
import android.text.method.LinkMovementMethod; import android.text.method.LinkMovementMethod;
import android.text.style.URLSpan; import android.text.style.URLSpan;
import android.util.Log; import android.util.Log;
@ -59,9 +60,9 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder {
private final TextView itemPublishedTime; private final TextView itemPublishedTime;
private final CompositeDisposable disposables = new CompositeDisposable(); private final CompositeDisposable disposables = new CompositeDisposable();
private Description commentText; @Nullable private Description commentText;
private StreamingService streamService; @Nullable private StreamingService streamService;
private String streamUrl; @Nullable private String streamUrl;
CommentsMiniInfoItemHolder(final InfoItemBuilder infoItemBuilder, final int layoutId, CommentsMiniInfoItemHolder(final InfoItemBuilder infoItemBuilder, final int layoutId,
final ViewGroup parent) { final ViewGroup parent) {
@ -153,15 +154,17 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder {
if (DeviceUtils.isTv(itemBuilder.getContext())) { if (DeviceUtils.isTv(itemBuilder.getContext())) {
openCommentAuthor(item); openCommentAuthor(item);
} else { } else {
ShareUtils.copyToClipboard(itemBuilder.getContext(), final CharSequence text = itemContentView.getText();
itemContentView.getText().toString()); if (text != null) {
ShareUtils.copyToClipboard(itemBuilder.getContext(), text.toString());
}
} }
return true; return true;
}); });
} }
private void openCommentAuthor(final CommentsInfoItem item) { private void openCommentAuthor(final CommentsInfoItem item) {
if (TextUtils.isEmpty(item.getUploaderUrl())) { if (isEmpty(item.getUploaderUrl())) {
return; return;
} }
final AppCompatActivity activity = (AppCompatActivity) itemBuilder.getContext(); final AppCompatActivity activity = (AppCompatActivity) itemBuilder.getContext();
@ -207,11 +210,12 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder {
linkifyCommentContentView(v -> { linkifyCommentContentView(v -> {
boolean hasEllipsis = false; boolean hasEllipsis = false;
if (itemContentView.getLineCount() > COMMENT_DEFAULT_LINES) { final CharSequence charSeqText = itemContentView.getText();
if (charSeqText != null && itemContentView.getLineCount() > COMMENT_DEFAULT_LINES) {
// Note that converting to String removes spans (i.e. links), but that's something // Note that converting to String removes spans (i.e. links), but that's something
// we actually want since when the text is ellipsized we want all clicks on the // we actually want since when the text is ellipsized we want all clicks on the
// comment to expand the comment, not to open links. // comment to expand the comment, not to open links.
final String text = itemContentView.getText().toString(); final String text = charSeqText.toString();
final Layout layout = itemContentView.getLayout(); final Layout layout = itemContentView.getLayout();
final float lineWidth = layout.getLineWidth(COMMENT_DEFAULT_LINES - 1); final float lineWidth = layout.getLineWidth(COMMENT_DEFAULT_LINES - 1);
@ -252,7 +256,7 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder {
private void toggleEllipsize() { private void toggleEllipsize() {
final CharSequence text = itemContentView.getText(); final CharSequence text = itemContentView.getText();
if (text.charAt(text.length() - 1) == ELLIPSIS.charAt(0)) { if (!isEmpty(text) && text.charAt(text.length() - 1) == ELLIPSIS.charAt(0)) {
expand(); expand();
} else if (itemContentView.getLineCount() > COMMENT_DEFAULT_LINES) { } else if (itemContentView.getLineCount() > COMMENT_DEFAULT_LINES) {
ellipsize(); ellipsize();