aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Ning <chineseperson5@gmail.com>2021-01-04 06:42:04 +0000
committerAlex Ning <chineseperson5@gmail.com>2021-01-04 06:42:04 +0000
commitd1aa3df4a7ccf6d2131dbd80f95590913f32d2f0 (patch)
tree261642682534a6504579695595a76cfc40232975
parenteb381eb3f4b2eb90cd3953fdca85902966228b1c (diff)
downloadinfinity-for-reddit-d1aa3df4a7ccf6d2131dbd80f95590913f32d2f0.tar
infinity-for-reddit-d1aa3df4a7ccf6d2131dbd80f95590913f32d2f0.tar.gz
infinity-for-reddit-d1aa3df4a7ccf6d2131dbd80f95590913f32d2f0.tar.bz2
infinity-for-reddit-d1aa3df4a7ccf6d2131dbd80f95590913f32d2f0.tar.lz
infinity-for-reddit-d1aa3df4a7ccf6d2131dbd80f95590913f32d2f0.tar.xz
infinity-for-reddit-d1aa3df4a7ccf6d2131dbd80f95590913f32d2f0.tar.zst
infinity-for-reddit-d1aa3df4a7ccf6d2131dbd80f95590913f32d2f0.zip
Long press a url to see options in CommentsListingRecyclerViewAdapter.
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentAndPostRecyclerViewAdapter.java5
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsListingRecyclerViewAdapter.java69
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/fragments/CommentsListingFragment.java6
3 files changed, 42 insertions, 38 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentAndPostRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentAndPostRecyclerViewAdapter.java
index 8fa48204..25f82e1e 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentAndPostRecyclerViewAdapter.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentAndPostRecyclerViewAdapter.java
@@ -14,7 +14,6 @@ import android.os.Bundle;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextPaint;
-import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.SuperscriptSpan;
import android.text.util.Linkify;
@@ -321,7 +320,6 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
textView.setTextColor(markdownColor);
textView.setOnLongClickListener(view -> {
if (textView.getSelectionStart() == -1 && textView.getSelectionEnd() == -1) {
- // do your code here this will only call if its not a hyperlink
Bundle bundle = new Bundle();
bundle.putString(CopyTextBottomSheetFragment.EXTRA_RAW_TEXT, mPost.getSelfTextPlain());
bundle.putString(CopyTextBottomSheetFragment.EXTRA_MARKDOWN, mPost.getSelfText());
@@ -3705,8 +3703,6 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
}
});
- commentMarkdownView.setMovementMethod(LinkMovementMethod.getInstance());
-
if (mSwapTapAndLong) {
if (mCommentToolbarHideOnClick) {
View.OnLongClickListener hideToolbarOnLongClickListener = view -> hideToolbar();
@@ -3742,7 +3738,6 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
return true;
});
}
- commentMarkdownView.setMovementMethod(LinkMovementMethod.getInstance());
commentMarkdownView.setHighlightColor(Color.TRANSPARENT);
}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsListingRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsListingRecyclerViewAdapter.java
index 7a9c85d7..c6ce9687 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsListingRecyclerViewAdapter.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsListingRecyclerViewAdapter.java
@@ -1,6 +1,5 @@
package ml.docilealligator.infinityforreddit.adapters;
-import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.ColorStateList;
@@ -10,7 +9,6 @@ import android.os.Bundle;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextPaint;
-import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.SuperscriptSpan;
import android.text.util.Linkify;
@@ -45,21 +43,24 @@ import io.noties.markwon.MarkwonConfiguration;
import io.noties.markwon.core.MarkwonTheme;
import io.noties.markwon.ext.strikethrough.StrikethroughPlugin;
import io.noties.markwon.linkify.LinkifyPlugin;
+import io.noties.markwon.movement.MovementMethodPlugin;
import io.noties.markwon.simple.ext.SimpleExtPlugin;
+import me.saket.bettermovementmethod.BetterLinkMovementMethod;
+import ml.docilealligator.infinityforreddit.NetworkState;
+import ml.docilealligator.infinityforreddit.R;
+import ml.docilealligator.infinityforreddit.SaveThing;
+import ml.docilealligator.infinityforreddit.VoteThing;
import ml.docilealligator.infinityforreddit.activities.LinkResolverActivity;
import ml.docilealligator.infinityforreddit.activities.ViewPostDetailActivity;
import ml.docilealligator.infinityforreddit.activities.ViewSubredditDetailActivity;
import ml.docilealligator.infinityforreddit.activities.ViewUserDetailActivity;
import ml.docilealligator.infinityforreddit.bottomsheetfragments.CommentMoreBottomSheetFragment;
+import ml.docilealligator.infinityforreddit.bottomsheetfragments.UrlMenuBottomSheetFragment;
import ml.docilealligator.infinityforreddit.comment.Comment;
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
-import ml.docilealligator.infinityforreddit.NetworkState;
-import ml.docilealligator.infinityforreddit.R;
-import ml.docilealligator.infinityforreddit.SaveThing;
import ml.docilealligator.infinityforreddit.utils.APIUtils;
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
import ml.docilealligator.infinityforreddit.utils.Utils;
-import ml.docilealligator.infinityforreddit.VoteThing;
import retrofit2.Retrofit;
public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment, RecyclerView.ViewHolder> {
@@ -77,7 +78,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
return comment.getCommentMarkdown().equals(t1.getCommentMarkdown());
}
};
- private Context mContext;
+ private AppCompatActivity mActivity;
private Retrofit mOauthRetrofit;
private Locale mLocale;
private Markwon mMarkwon;
@@ -104,16 +105,16 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
private NetworkState networkState;
private RetryLoadingMoreCallback mRetryLoadingMoreCallback;
- public CommentsListingRecyclerViewAdapter(Context context, Retrofit oauthRetrofit,
+ public CommentsListingRecyclerViewAdapter(AppCompatActivity activity, Retrofit oauthRetrofit,
CustomThemeWrapper customThemeWrapper, Locale locale,
SharedPreferences sharedPreferences, String accessToken,
String accountName, RetryLoadingMoreCallback retryLoadingMoreCallback) {
super(DIFF_CALLBACK);
- mContext = context;
+ mActivity = activity;
mOauthRetrofit = oauthRetrofit;
mCommentColor = customThemeWrapper.getCommentColor();
int commentSpoilerBackgroundColor = mCommentColor | 0xFF000000;
- mMarkwon = Markwon.builder(mContext)
+ mMarkwon = Markwon.builder(mActivity)
.usePlugin(new AbstractMarkwonPlugin() {
@NonNull
@Override
@@ -182,14 +183,24 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
@Override
public void configureConfiguration(@NonNull MarkwonConfiguration.Builder builder) {
builder.linkResolver((view, link) -> {
- Intent intent = new Intent(mContext, LinkResolverActivity.class);
+ Intent intent = new Intent(mActivity, LinkResolverActivity.class);
Uri uri = Uri.parse(link);
intent.setData(uri);
- mContext.startActivity(intent);
+ mActivity.startActivity(intent);
});
}
})
+ .usePlugin(MovementMethodPlugin.create(BetterLinkMovementMethod.linkify(Linkify.WEB_URLS, activity).setOnLinkLongClickListener((textView, url) -> {
+ if (activity != null && !activity.isDestroyed() && !activity.isFinishing()) {
+ UrlMenuBottomSheetFragment urlMenuBottomSheetFragment = new UrlMenuBottomSheetFragment();
+ Bundle bundle = new Bundle();
+ bundle.putString(UrlMenuBottomSheetFragment.EXTRA_URL, url);
+ urlMenuBottomSheetFragment.setArguments(bundle);
+ urlMenuBottomSheetFragment.show(activity.getSupportFragmentManager(), urlMenuBottomSheetFragment.getTag());
+ }
+ return true;
+ })))
.usePlugin(LinkifyPlugin.create(Linkify.WEB_URLS))
.usePlugin(StrikethroughPlugin.create())
.usePlugin(SimpleExtPlugin.create(plugin ->
@@ -260,7 +271,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
if (mShowElapsedTime) {
((CommentViewHolder) holder).commentTimeTextView.setText(
- Utils.getElapsedTime(mContext, comment.getCommentTimeMillis()));
+ Utils.getElapsedTime(mActivity, comment.getCommentTimeMillis()));
} else {
((CommentViewHolder) holder).commentTimeTextView.setText(Utils.getFormattedTime(mLocale, comment.getCommentTimeMillis(), mTimeFormatPattern));
}
@@ -473,8 +484,6 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
replyButton.setColorFilter(mCommentIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
commentDivider.setBackgroundColor(mDividerColor);
- commentMarkdownView.setMovementMethod(LinkMovementMethod.getInstance());
-
authorTextView.setOnClickListener(view -> {
int position = getAdapterPosition();
if (position < 0) {
@@ -483,13 +492,13 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
Comment comment = getItem(getAdapterPosition());
if (comment != null) {
if (comment.getSubredditName().substring(2).equals(comment.getLinkAuthor())) {
- Intent intent = new Intent(mContext, ViewUserDetailActivity.class);
+ Intent intent = new Intent(mActivity, ViewUserDetailActivity.class);
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, comment.getLinkAuthor());
- mContext.startActivity(intent);
+ mActivity.startActivity(intent);
} else {
- Intent intent = new Intent(mContext, ViewSubredditDetailActivity.class);
+ Intent intent = new Intent(mActivity, ViewSubredditDetailActivity.class);
intent.putExtra(ViewSubredditDetailActivity.EXTRA_SUBREDDIT_NAME_KEY, comment.getSubredditName());
- mContext.startActivity(intent);
+ mActivity.startActivity(intent);
}
}
});
@@ -511,7 +520,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
bundle.putString(CommentMoreBottomSheetFragment.EXTRA_COMMENT_MARKDOWN, comment.getCommentMarkdown());
CommentMoreBottomSheetFragment commentMoreBottomSheetFragment = new CommentMoreBottomSheetFragment();
commentMoreBottomSheetFragment.setArguments(bundle);
- commentMoreBottomSheetFragment.show(((AppCompatActivity) mContext).getSupportFragmentManager(), commentMoreBottomSheetFragment.getTag());
+ commentMoreBottomSheetFragment.show(((AppCompatActivity) mActivity).getSupportFragmentManager(), commentMoreBottomSheetFragment.getTag());
}
});
@@ -522,10 +531,10 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
}
Comment comment = getItem(getAdapterPosition());
if (comment != null) {
- Intent intent = new Intent(mContext, ViewPostDetailActivity.class);
+ Intent intent = new Intent(mActivity, ViewPostDetailActivity.class);
intent.putExtra(ViewPostDetailActivity.EXTRA_POST_ID, comment.getLinkId());
intent.putExtra(ViewPostDetailActivity.EXTRA_SINGLE_COMMENT_ID, comment.getId());
- mContext.startActivity(intent);
+ mActivity.startActivity(intent);
}
});
@@ -537,7 +546,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
upvoteButton.setOnClickListener(view -> {
if (mAccessToken == null) {
- Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, R.string.login_first, Toast.LENGTH_SHORT).show();
return;
}
@@ -570,7 +579,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes,
comment.getScore() + comment.getVoteType()));
- VoteThing.voteThing(mContext, mOauthRetrofit, mAccessToken, new VoteThing.VoteThingListener() {
+ VoteThing.voteThing(mActivity, mOauthRetrofit, mAccessToken, new VoteThing.VoteThingListener() {
@Override
public void onVoteThingSuccess(int position1) {
int currentPosition = getAdapterPosition();
@@ -604,7 +613,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
downvoteButton.setOnClickListener(view -> {
if (mAccessToken == null) {
- Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, R.string.login_first, Toast.LENGTH_SHORT).show();
return;
}
@@ -636,7 +645,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes,
comment.getScore() + comment.getVoteType()));
- VoteThing.voteThing(mContext, mOauthRetrofit, mAccessToken, new VoteThing.VoteThingListener() {
+ VoteThing.voteThing(mActivity, mOauthRetrofit, mAccessToken, new VoteThing.VoteThingListener() {
@Override
public void onVoteThingSuccess(int position1) {
int currentPosition = getAdapterPosition();
@@ -684,7 +693,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
if (getAdapterPosition() == position) {
saveButton.setImageResource(R.drawable.ic_bookmark_border_grey_24dp);
}
- Toast.makeText(mContext, R.string.comment_unsaved_success, Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, R.string.comment_unsaved_success, Toast.LENGTH_SHORT).show();
}
@Override
@@ -693,7 +702,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
if (getAdapterPosition() == position) {
saveButton.setImageResource(R.drawable.ic_bookmark_grey_24dp);
}
- Toast.makeText(mContext, R.string.comment_unsaved_failed, Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, R.string.comment_unsaved_failed, Toast.LENGTH_SHORT).show();
}
});
} else {
@@ -705,7 +714,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
if (getAdapterPosition() == position) {
saveButton.setImageResource(R.drawable.ic_bookmark_grey_24dp);
}
- Toast.makeText(mContext, R.string.comment_saved_success, Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, R.string.comment_saved_success, Toast.LENGTH_SHORT).show();
}
@Override
@@ -714,7 +723,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
if (getAdapterPosition() == position) {
saveButton.setImageResource(R.drawable.ic_bookmark_border_grey_24dp);
}
- Toast.makeText(mContext, R.string.comment_saved_failed, Toast.LENGTH_SHORT).show();
+ Toast.makeText(mActivity, R.string.comment_saved_failed, Toast.LENGTH_SHORT).show();
}
});
}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/CommentsListingFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/CommentsListingFragment.java
index af34d5a3..c9d8f168 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/CommentsListingFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/CommentsListingFragment.java
@@ -1,7 +1,6 @@
package ml.docilealligator.infinityforreddit.fragments;
-import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
@@ -19,6 +18,7 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.content.res.ResourcesCompat;
import androidx.fragment.app.Fragment;
@@ -101,7 +101,7 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni
private boolean mNullAccessToken = false;
private String mAccessToken;
private RequestManager mGlide;
- private Activity mActivity;
+ private AppCompatActivity mActivity;
private LinearLayoutManager mLinearLayoutManager;
private CommentsListingRecyclerViewAdapter mAdapter;
private SortType sortType;
@@ -373,7 +373,7 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
- this.mActivity = (Activity) context;
+ this.mActivity = (AppCompatActivity) context;
}
@Override