diff options
Diffstat (limited to 'app/src/main')
8 files changed, 131 insertions, 96 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostDetailRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostDetailRecyclerViewAdapter.java index bf6fabe9..88c2a723 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostDetailRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostDetailRecyclerViewAdapter.java @@ -108,7 +108,6 @@ import ml.docilealligator.infinityforreddit.bottomsheetfragments.ShareLinkBottom import ml.docilealligator.infinityforreddit.bottomsheetfragments.UrlMenuBottomSheetFragment; import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper; import ml.docilealligator.infinityforreddit.customviews.AspectRatioGifImageView; -import ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFixed; import ml.docilealligator.infinityforreddit.customviews.MarkwonLinearLayoutManager; import ml.docilealligator.infinityforreddit.fragments.ViewPostDetailFragment; import ml.docilealligator.infinityforreddit.markdown.SpoilerParserPlugin; @@ -657,6 +656,13 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler ((PostDetailBaseViewHolder) holder).mSaveButton.setImageResource(R.drawable.ic_bookmark_border_grey_24dp); } + if (mPost.getSelfText() != null && !mPost.getSelfText().equals("")) { + ((PostDetailBaseViewHolder) holder).mContentMarkdownView.setVisibility(View.VISIBLE); + ((PostDetailBaseViewHolder) holder).mContentMarkdownView.setAdapter(mMarkwonAdapter); + mMarkwonAdapter.setMarkdown(mPostDetailMarkwon, mPost.getSelfText()); + mMarkwonAdapter.notifyDataSetChanged(); + } + if (holder instanceof PostDetailVideoAutoplayViewHolder) { ((PostDetailVideoAutoplayViewHolder) holder).previewImageView.setVisibility(View.VISIBLE); Post.Preview preview = getSuitablePreview(mPost.getPreviews()); @@ -752,7 +758,6 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler ((PostDetailLinkViewHolder) holder).mImageView.setRatio((float) preview.getPreviewHeight() / (float) preview.getPreviewWidth()); loadImage((PostDetailLinkViewHolder) holder, preview); } - } else if (holder instanceof PostDetailNoPreviewViewHolder) { if (mPost.getPostType() == Post.LINK_TYPE || mPost.getPostType() == Post.NO_PREVIEW_LINK_TYPE) { if (!mHidePostType) { @@ -791,25 +796,6 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler break; } } - - if (mPost.getSelfText() != null && !mPost.getSelfText().equals("")) { - ((PostDetailNoPreviewViewHolder) holder).mContentMarkdownView.setVisibility(View.VISIBLE); - LinearLayoutManagerBugFixed linearLayoutManager = new MarkwonLinearLayoutManager(mActivity, new MarkwonLinearLayoutManager.HorizontalScrollViewScrolledListener() { - @Override - public void onScrolledLeft() { - ((ViewPostDetailActivity) mActivity).lockSwipeRightToGoBack(); - } - - @Override - public void onScrolledRight() { - ((ViewPostDetailActivity) mActivity).unlockSwipeRightToGoBack(); - } - }); - ((PostDetailNoPreviewViewHolder) holder).mContentMarkdownView.setLayoutManager(linearLayoutManager); - ((PostDetailNoPreviewViewHolder) holder).mContentMarkdownView.setAdapter(mMarkwonAdapter); - mMarkwonAdapter.setMarkdown(mPostDetailMarkwon, mPost.getSelfText()); - mMarkwonAdapter.notifyDataSetChanged(); - } } else if (holder instanceof PostDetailGalleryViewHolder) { Post.Preview preview = getSuitablePreview(mPost.getPreviews()); if (preview != null) { @@ -823,25 +809,6 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler } else { ((PostDetailGalleryViewHolder) holder).mNoPreviewPostTypeImageView.setVisibility(View.VISIBLE); } - } else if (holder instanceof PostDetailTextViewHolder) { - if (mPost.getSelfText() != null && !mPost.getSelfText().equals("")) { - ((PostDetailTextViewHolder) holder).mContentMarkdownView.setVisibility(View.VISIBLE); - LinearLayoutManagerBugFixed linearLayoutManager = new MarkwonLinearLayoutManager(mActivity, new MarkwonLinearLayoutManager.HorizontalScrollViewScrolledListener() { - @Override - public void onScrolledLeft() { - ((ViewPostDetailActivity) mActivity).lockSwipeRightToGoBack(); - } - - @Override - public void onScrolledRight() { - ((ViewPostDetailActivity) mActivity).unlockSwipeRightToGoBack(); - } - }); - ((PostDetailTextViewHolder) holder).mContentMarkdownView.setLayoutManager(linearLayoutManager); - ((PostDetailTextViewHolder) holder).mContentMarkdownView.setAdapter(mMarkwonAdapter); - mMarkwonAdapter.setMarkdown(mPostDetailMarkwon, mPost.getSelfText()); - mMarkwonAdapter.notifyDataSetChanged(); - } } } } @@ -1075,6 +1042,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler ((PostDetailBaseViewHolder) holder).mFlairTextView.setVisibility(View.GONE); ((PostDetailBaseViewHolder) holder).mSpoilerTextView.setVisibility(View.GONE); ((PostDetailBaseViewHolder) holder).mNSFWTextView.setVisibility(View.GONE); + ((PostDetailBaseViewHolder) holder).mContentMarkdownView.setVisibility(View.GONE); if (holder instanceof PostDetailVideoAutoplayViewHolder) { if (((PostDetailVideoAutoplayViewHolder) holder).fetchGfycatOrStreamableVideoCall != null && !((PostDetailVideoAutoplayViewHolder) holder).fetchGfycatOrStreamableVideoCall.isCanceled()) { @@ -1137,6 +1105,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler CustomTextView mFlairTextView; TextView mAwardsTextView; TextView mUpvoteRatioTextView; + RecyclerView mContentMarkdownView; ConstraintLayout mBottomConstraintLayout; ImageView mUpvoteButton; TextView mScoreTextView; @@ -1164,6 +1133,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler CustomTextView mFlairTextView, TextView mAwardsTextView, TextView mUpvoteRatioTextView, + RecyclerView mContentMarkdownView, ConstraintLayout mBottomConstraintLayout, ImageView mUpvoteButton, TextView mScoreTextView, @@ -1186,6 +1156,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler this.mFlairTextView = mFlairTextView; this.mAwardsTextView = mAwardsTextView; this.mUpvoteRatioTextView = mUpvoteRatioTextView; + this.mContentMarkdownView = mContentMarkdownView; this.mBottomConstraintLayout = mBottomConstraintLayout; this.mUpvoteButton = mUpvoteButton; this.mScoreTextView = mScoreTextView; @@ -1250,6 +1221,18 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler mActivity.startActivity(intent); }); + mContentMarkdownView.setLayoutManager(new MarkwonLinearLayoutManager(mActivity, new MarkwonLinearLayoutManager.HorizontalScrollViewScrolledListener() { + @Override + public void onScrolledLeft() { + ((ViewPostDetailActivity) mActivity).lockSwipeRightToGoBack(); + } + + @Override + public void onScrolledRight() { + ((ViewPostDetailActivity) mActivity).unlockSwipeRightToGoBack(); + } + })); + mUpvoteButton.setOnClickListener(view -> { if (mPost.isArchived()) { Toast.makeText(mActivity, R.string.archived_post_vote_unavailable, Toast.LENGTH_SHORT).show(); @@ -1627,6 +1610,8 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler ImageView muteButton; @BindView(R.id.fullscreen_exo_playback_control_view) ImageView fullscreenButton; + @BindView(R.id.content_markdown_view_item_post_detail_video_autoplay) + RecyclerView mContentMarkdownView; @BindView(R.id.bottom_constraint_layout_item_post_detail_video_autoplay) ConstraintLayout mBottomConstraintLayout; @BindView(R.id.plus_button_item_post_detail_video_autoplay) @@ -1664,6 +1649,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler mFlairTextView, mAwardsTextView, mUpvoteRatioTextView, + mContentMarkdownView, mBottomConstraintLayout, mUpvoteButton, mScoreTextView, @@ -1873,6 +1859,8 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler ImageView videoOrGifIndicatorImageView; @BindView(R.id.image_view_item_post_detail_video_and_gif_preview) AspectRatioGifImageView mImageView; + @BindView(R.id.content_markdown_view_item_post_detail_video_and_gif_preview) + RecyclerView mContentMarkdownView; @BindView(R.id.bottom_constraint_layout_item_post_detail_video_and_gif_preview) ConstraintLayout mBottomConstraintLayout; @BindView(R.id.plus_button_item_post_detail_video_and_gif_preview) @@ -1906,6 +1894,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler mFlairTextView, mAwardsTextView, mUpvoteRatioTextView, + mContentMarkdownView, mBottomConstraintLayout, mUpvoteButton, mScoreTextView, @@ -2000,6 +1989,8 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler TextView mLoadImageErrorTextView; @BindView(R.id.image_view_item_post_detail_image_and_gif_autoplay) AspectRatioGifImageView mImageView; + @BindView(R.id.content_markdown_view_item_post_detail_image_and_gif_autoplay) + RecyclerView mContentMarkdownView; @BindView(R.id.bottom_constraint_layout_item_post_detail_image_and_gif_autoplay) ConstraintLayout mBottomConstraintLayout; @BindView(R.id.plus_button_item_post_detail_image_and_gif_autoplay) @@ -2033,6 +2024,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler mFlairTextView, mAwardsTextView, mUpvoteRatioTextView, + mContentMarkdownView, mBottomConstraintLayout, mUpvoteButton, mScoreTextView, @@ -2112,6 +2104,8 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler TextView mLoadImageErrorTextView; @BindView(R.id.image_view_item_post_detail_link) AspectRatioGifImageView mImageView; + @BindView(R.id.content_markdown_view_item_post_detail_link) + RecyclerView mContentMarkdownView; @BindView(R.id.bottom_constraint_layout_item_post_detail_link) ConstraintLayout mBottomConstraintLayout; @BindView(R.id.plus_button_item_post_detail_link) @@ -2145,6 +2139,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler mFlairTextView, mAwardsTextView, mUpvoteRatioTextView, + mContentMarkdownView, mBottomConstraintLayout, mUpvoteButton, mScoreTextView, @@ -2240,6 +2235,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler mFlairTextView, mAwardsTextView, mUpvoteRatioTextView, + mContentMarkdownView, mBottomConstraintLayout, mUpvoteButton, mScoreTextView, @@ -2361,6 +2357,8 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler TextView mCaptionUrlTextView; @BindView(R.id.image_view_no_preview_link_item_post_detail_gallery) ImageView mNoPreviewPostTypeImageView; + @BindView(R.id.content_markdown_view_item_post_detail_gallery) + RecyclerView mContentMarkdownView; @BindView(R.id.bottom_constraint_layout_item_post_detail_gallery) ConstraintLayout mBottomConstraintLayout; @BindView(R.id.plus_button_item_post_detail_gallery) @@ -2394,6 +2392,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler mFlairTextView, mAwardsTextView, mUpvoteRatioTextView, + mContentMarkdownView, mBottomConstraintLayout, mUpvoteButton, mScoreTextView, @@ -2493,6 +2492,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler mFlairTextView, mAwardsTextView, mUpvoteRatioTextView, + mContentMarkdownView, mBottomConstraintLayout, mUpvoteButton, mScoreTextView, diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/post/ParsePost.java b/app/src/main/java/ml/docilealligator/infinityforreddit/post/ParsePost.java index b3260973..71f131d3 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/post/ParsePost.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/post/ParsePost.java @@ -267,35 +267,8 @@ public class ParsePost { authorFlair, authorFlairHTML, postTimeMillis, title, permalink, score, postType, voteType, nComments, upvoteRatio, flair, awards, nAwards, hidden, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost); - if (data.isNull(JSONUtils.SELFTEXT_KEY)) { - post.setSelfText(""); - } else { - String selfText = Utils.modifyMarkdown(data.getString(JSONUtils.SELFTEXT_KEY).trim()); - post.setSelfText(selfText); - if (data.isNull(JSONUtils.SELFTEXT_HTML_KEY)) { - post.setSelfTextPlainTrimmed(""); - } else { - String selfTextPlain = Utils.trimTrailingWhitespace( - Html.fromHtml(data.getString(JSONUtils.SELFTEXT_HTML_KEY))).toString(); - post.setSelfTextPlain(selfTextPlain); - if (selfTextPlain.length() > 250) { - selfTextPlain = selfTextPlain.substring(0, 250); - } - if (!selfText.equals("")) { - Pattern p = Pattern.compile(">!.+!<"); - Matcher m = p.matcher(selfText.substring(0, Math.min(selfText.length(), 400))); - if (m.find()) { - post.setSelfTextPlainTrimmed(""); - } else { - post.setSelfTextPlainTrimmed(selfTextPlain); - } - } else { - post.setSelfTextPlainTrimmed(selfTextPlain); - } - } - } } else { - if (url.endsWith("jpg") || url.endsWith("png")) { + if (url.endsWith("jpg") || url.endsWith("png") || url.endsWith("jpeg")) { //Image post int postType = Post.IMAGE_TYPE; @@ -496,34 +469,6 @@ public class ParsePost { //Need attention post.setPreviews(previews); - - if (data.isNull(JSONUtils.SELFTEXT_KEY)) { - post.setSelfText(""); - } else { - String selfText = Utils.modifyMarkdown(data.getString(JSONUtils.SELFTEXT_KEY).trim()); - post.setSelfText(selfText); - if (data.isNull(JSONUtils.SELFTEXT_HTML_KEY)) { - post.setSelfTextPlainTrimmed(""); - } else { - String selfTextPlain = Utils.trimTrailingWhitespace( - Html.fromHtml(data.getString(JSONUtils.SELFTEXT_HTML_KEY))).toString(); - post.setSelfTextPlain(selfTextPlain); - if (selfTextPlain.length() > 250) { - selfTextPlain = selfTextPlain.substring(0, 250); - } - if (!selfText.equals("")) { - Pattern p = Pattern.compile(">!.+!<"); - Matcher m = p.matcher(selfText.substring(0, Math.min(selfText.length(), 400))); - if (m.find()) { - post.setSelfTextPlainTrimmed(""); - } else { - post.setSelfTextPlainTrimmed(selfTextPlain); - } - } else { - post.setSelfTextPlainTrimmed(selfTextPlain); - } - } - } } else { //Link post int postType = Post.LINK_TYPE; @@ -747,6 +692,36 @@ public class ParsePost { } } + if (post.getPostType() != Post.LINK_TYPE && post.getPostType() != Post.NO_PREVIEW_LINK_TYPE) { + if (data.isNull(JSONUtils.SELFTEXT_KEY)) { + post.setSelfText(""); + } else { + String selfText = Utils.modifyMarkdown(data.getString(JSONUtils.SELFTEXT_KEY).trim()); + post.setSelfText(selfText); + if (data.isNull(JSONUtils.SELFTEXT_HTML_KEY)) { + post.setSelfTextPlainTrimmed(""); + } else { + String selfTextPlain = Utils.trimTrailingWhitespace( + Html.fromHtml(data.getString(JSONUtils.SELFTEXT_HTML_KEY))).toString(); + post.setSelfTextPlain(selfTextPlain); + if (selfTextPlain.length() > 250) { + selfTextPlain = selfTextPlain.substring(0, 250); + } + if (!selfText.equals("")) { + Pattern p = Pattern.compile(">!.+!<"); + Matcher m = p.matcher(selfText.substring(0, Math.min(selfText.length(), 400))); + if (m.find()) { + post.setSelfTextPlainTrimmed(""); + } else { + post.setSelfTextPlainTrimmed(selfTextPlain); + } + } else { + post.setSelfTextPlainTrimmed(selfTextPlain); + } + } + } + } + return post; } diff --git a/app/src/main/res/layout/item_post_detail_gallery.xml b/app/src/main/res/layout/item_post_detail_gallery.xml index a73e1965..dbdd849e 100644 --- a/app/src/main/res/layout/item_post_detail_gallery.xml +++ b/app/src/main/res/layout/item_post_detail_gallery.xml @@ -320,6 +320,16 @@ </androidx.constraintlayout.widget.ConstraintLayout> + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/content_markdown_view_item_post_detail_gallery" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + android:layout_marginStart="8dp" + android:layout_marginEnd="8dp" + android:visibility="gone" + android:nestedScrollingEnabled="false" /> + <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/bottom_constraint_layout_item_post_detail_gallery" android:layout_width="match_parent" diff --git a/app/src/main/res/layout/item_post_detail_image_and_gif_autoplay.xml b/app/src/main/res/layout/item_post_detail_image_and_gif_autoplay.xml index 3f40a6e4..900ce5d1 100644 --- a/app/src/main/res/layout/item_post_detail_image_and_gif_autoplay.xml +++ b/app/src/main/res/layout/item_post_detail_image_and_gif_autoplay.xml @@ -241,6 +241,16 @@ </RelativeLayout> + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/content_markdown_view_item_post_detail_image_and_gif_autoplay" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + android:layout_marginStart="8dp" + android:layout_marginEnd="8dp" + android:visibility="gone" + android:nestedScrollingEnabled="false" /> + <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" diff --git a/app/src/main/res/layout/item_post_detail_link.xml b/app/src/main/res/layout/item_post_detail_link.xml index 26d4479d..a6299212 100644 --- a/app/src/main/res/layout/item_post_detail_link.xml +++ b/app/src/main/res/layout/item_post_detail_link.xml @@ -251,6 +251,16 @@ </RelativeLayout> + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/content_markdown_view_item_post_detail_link" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + android:layout_marginStart="8dp" + android:layout_marginEnd="8dp" + android:visibility="gone" + android:nestedScrollingEnabled="false" /> + <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" diff --git a/app/src/main/res/layout/item_post_detail_video_and_gif_preview.xml b/app/src/main/res/layout/item_post_detail_video_and_gif_preview.xml index 44197b8d..f1d84e27 100644 --- a/app/src/main/res/layout/item_post_detail_video_and_gif_preview.xml +++ b/app/src/main/res/layout/item_post_detail_video_and_gif_preview.xml @@ -254,6 +254,16 @@ </RelativeLayout> + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/content_markdown_view_item_post_detail_video_and_gif_preview" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + android:layout_marginStart="8dp" + android:layout_marginEnd="8dp" + android:visibility="gone" + android:nestedScrollingEnabled="false" /> + <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" diff --git a/app/src/main/res/layout/item_post_detail_video_autoplay.xml b/app/src/main/res/layout/item_post_detail_video_autoplay.xml index c23d3af8..d4818d41 100644 --- a/app/src/main/res/layout/item_post_detail_video_autoplay.xml +++ b/app/src/main/res/layout/item_post_detail_video_autoplay.xml @@ -235,6 +235,16 @@ </com.google.android.exoplayer2.ui.AspectRatioFrameLayout> + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/content_markdown_view_item_post_detail_video_autoplay" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + android:layout_marginStart="8dp" + android:layout_marginEnd="8dp" + android:visibility="gone" + android:nestedScrollingEnabled="false" /> + <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" diff --git a/app/src/main/res/layout/item_post_detail_video_autoplay_legacy_controller.xml b/app/src/main/res/layout/item_post_detail_video_autoplay_legacy_controller.xml index 8e1b67ac..c21efc56 100644 --- a/app/src/main/res/layout/item_post_detail_video_autoplay_legacy_controller.xml +++ b/app/src/main/res/layout/item_post_detail_video_autoplay_legacy_controller.xml @@ -236,6 +236,16 @@ </com.google.android.exoplayer2.ui.AspectRatioFrameLayout> + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/content_markdown_view_item_post_detail_video_autoplay" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + android:layout_marginStart="8dp" + android:layout_marginEnd="8dp" + android:visibility="gone" + android:nestedScrollingEnabled="false" /> + <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" |