diff options
author | Docile-Alligator <25734209+Docile-Alligator@users.noreply.github.com> | 2023-11-22 17:52:28 +0000 |
---|---|---|
committer | Docile-Alligator <25734209+Docile-Alligator@users.noreply.github.com> | 2023-11-22 17:52:28 +0000 |
commit | 7c68239272113e6c913a54723f4196f3d0fb0acc (patch) | |
tree | c24ab598918c6265cd10604c022fbb4e4945c4ce | |
parent | 1a104d9033075b3b466c22b3577b636ff25f8990 (diff) | |
download | infinity-for-reddit-7c68239272113e6c913a54723f4196f3d0fb0acc.tar infinity-for-reddit-7c68239272113e6c913a54723f4196f3d0fb0acc.tar.gz infinity-for-reddit-7c68239272113e6c913a54723f4196f3d0fb0acc.tar.bz2 infinity-for-reddit-7c68239272113e6c913a54723f4196f3d0fb0acc.tar.lz infinity-for-reddit-7c68239272113e6c913a54723f4196f3d0fb0acc.tar.xz infinity-for-reddit-7c68239272113e6c913a54723f4196f3d0fb0acc.tar.zst infinity-for-reddit-7c68239272113e6c913a54723f4196f3d0fb0acc.zip |
Start implementing showing gifs and images in comments.
73 files changed, 411 insertions, 278 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/MediaMetadata.java b/app/src/main/java/ml/docilealligator/infinityforreddit/MediaMetadata.java new file mode 100644 index 00000000..3a75e6c1 --- /dev/null +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/MediaMetadata.java @@ -0,0 +1,119 @@ +package ml.docilealligator.infinityforreddit; + +import android.net.Uri; +import android.os.Parcel; +import android.os.Parcelable; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +public class MediaMetadata implements Parcelable { + public String id; + //E.g. Image + public String e; + public String fileName; + public boolean isGIF; + public MediaItem original; + public MediaItem downscaled; + + public MediaMetadata(String id, String e, MediaItem original, MediaItem downscaled) { + this.id = id; + this.e = e; + isGIF = !e.equalsIgnoreCase("image"); + String path = Uri.parse(original.url).getPath(); + this.fileName = path == null ? (isGIF ? "Animated.gif" : "Image.jpg") : path.substring(1); + this.original = original; + this.downscaled = downscaled; + } + + protected MediaMetadata(Parcel in) { + id = in.readString(); + e = in.readString(); + fileName = in.readString(); + isGIF = in.readByte() != 0; + original = in.readParcelable(MediaItem.class.getClassLoader()); + downscaled = in.readParcelable(MediaItem.class.getClassLoader()); + } + + public static final Creator<MediaMetadata> CREATOR = new Creator<MediaMetadata>() { + @Override + public MediaMetadata createFromParcel(Parcel in) { + return new MediaMetadata(in); + } + + @Override + public MediaMetadata[] newArray(int size) { + return new MediaMetadata[size]; + } + }; + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + dest.writeString(id); + dest.writeString(e); + dest.writeString(fileName); + dest.writeByte((byte) (isGIF ? 1 : 0)); + dest.writeParcelable(original, flags); + dest.writeParcelable(downscaled, flags); + } + + public static class MediaItem implements Parcelable { + public int x; + public int y; + //Image or gif + public String url; + //Only for gifs + @Nullable + public String mp4Url; + + public MediaItem(int x, int y, String url) { + this.x = x; + this.y = y; + this.url = url; + } + + public MediaItem(int x, int y, String url, String mp4Url) { + this.x = x; + this.y = y; + this.url = url; + this.mp4Url = mp4Url; + } + + protected MediaItem(Parcel in) { + x = in.readInt(); + y = in.readInt(); + url = in.readString(); + mp4Url = in.readString(); + } + + public static final Creator<MediaItem> CREATOR = new Creator<MediaItem>() { + @Override + public MediaItem createFromParcel(Parcel in) { + return new MediaItem(in); + } + + @Override + public MediaItem[] newArray(int size) { + return new MediaItem[size]; + } + }; + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + dest.writeInt(x); + dest.writeInt(y); + dest.writeString(url); + dest.writeString(mp4Url); + } + } +} diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/AccountPostsActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/AccountPostsActivity.java index e66bb9ea..1f5d229c 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/AccountPostsActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/AccountPostsActivity.java @@ -136,7 +136,7 @@ public class AccountPostsActivity extends BaseActivity implements SortTypeSelect } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/AccountSavedThingActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/AccountSavedThingActivity.java index cc4e3eb6..5c99c275 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/AccountSavedThingActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/AccountSavedThingActivity.java @@ -139,7 +139,7 @@ public class AccountSavedThingActivity extends BaseActivity implements ActivityT } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/BaseActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/BaseActivity.java index 40a81378..a9b49c95 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/BaseActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/BaseActivity.java @@ -227,7 +227,7 @@ public abstract class BaseActivity extends AppCompatActivity implements CustomFo public abstract SharedPreferences getDefaultSharedPreferences(); - protected abstract CustomThemeWrapper getCustomThemeWrapper(); + public abstract CustomThemeWrapper getCustomThemeWrapper(); protected abstract void applyCustomTheme(); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentActivity.java index 3ad2c699..6096f1c4 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentActivity.java @@ -49,6 +49,7 @@ import io.noties.markwon.recycler.MarkwonAdapter; import jp.wasabeef.glide.transformations.RoundedCornersTransformation; import ml.docilealligator.infinityforreddit.AnyAccountAccessTokenAuthenticator; import ml.docilealligator.infinityforreddit.Infinity; +import ml.docilealligator.infinityforreddit.MediaMetadata; import ml.docilealligator.infinityforreddit.R; import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase; import ml.docilealligator.infinityforreddit.UploadImageEnabledActivity; @@ -67,7 +68,6 @@ import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent; import ml.docilealligator.infinityforreddit.markdown.ImageAndGifEntry; import ml.docilealligator.infinityforreddit.markdown.ImageAndGifPlugin; import ml.docilealligator.infinityforreddit.markdown.MarkdownUtils; -import ml.docilealligator.infinityforreddit.post.Post; import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils; import ml.docilealligator.infinityforreddit.utils.Utils; import okhttp3.ConnectionPool; @@ -215,7 +215,7 @@ public class CommentActivity extends BaseActivity implements UploadImageEnabledA miscPlugin, imageAndGifPlugin, parentTextColor, parentSpoilerBackgroundColor, null); MarkwonAdapter markwonAdapter = MarkdownUtils.createTablesAdapter(new ImageAndGifEntry(this, mGlide, new ImageAndGifEntry.OnItemClickListener() { @Override - public void onItemClick(Post.MediaMetadata mediaMetadata) { + public void onItemClick(MediaMetadata mediaMetadata) { } })); @@ -318,7 +318,7 @@ public class CommentActivity extends BaseActivity implements UploadImageEnabledA } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentFilterPreferenceActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentFilterPreferenceActivity.java index 11a1aa9a..b4d1fb8d 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentFilterPreferenceActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentFilterPreferenceActivity.java @@ -143,7 +143,7 @@ public class CommentFilterPreferenceActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return customThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentFilterUsageListingActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentFilterUsageListingActivity.java index 2a05936f..fc5dac54 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentFilterUsageListingActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentFilterUsageListingActivity.java @@ -165,7 +165,7 @@ public class CommentFilterUsageListingActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return customThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CreateMultiRedditActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CreateMultiRedditActivity.java index 9bc280e2..9f07ddc3 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CreateMultiRedditActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CreateMultiRedditActivity.java @@ -222,7 +222,7 @@ public class CreateMultiRedditActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomThemeListingActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomThemeListingActivity.java index 3e983761..4a87a47b 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomThemeListingActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomThemeListingActivity.java @@ -147,7 +147,7 @@ public class CustomThemeListingActivity extends BaseActivity implements } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return customThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizeCommentFilterActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizeCommentFilterActivity.java index 991bc7a9..77534e7c 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizeCommentFilterActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizeCommentFilterActivity.java @@ -157,7 +157,7 @@ public class CustomizeCommentFilterActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizePostFilterActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizePostFilterActivity.java index 815f89ee..f2581883 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizePostFilterActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizePostFilterActivity.java @@ -375,7 +375,7 @@ public class CustomizePostFilterActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizeThemeActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizeThemeActivity.java index 1372c235..22f66c27 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizeThemeActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizeThemeActivity.java @@ -250,7 +250,7 @@ public class CustomizeThemeActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return customThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditCommentActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditCommentActivity.java index 661c568d..caa8fcac 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditCommentActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditCommentActivity.java @@ -172,7 +172,7 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditMultiRedditActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditMultiRedditActivity.java index ab214588..11322efc 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditMultiRedditActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditMultiRedditActivity.java @@ -278,7 +278,7 @@ public class EditMultiRedditActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditPostActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditPostActivity.java index 5e022426..13a6434d 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditPostActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditPostActivity.java @@ -181,7 +181,7 @@ public class EditPostActivity extends BaseActivity implements UploadImageEnabled } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditProfileActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditProfileActivity.java index 96bfcad3..4d57dd00 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditProfileActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditProfileActivity.java @@ -336,7 +336,7 @@ public class EditProfileActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/FetchRandomSubredditOrPostActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/FetchRandomSubredditOrPostActivity.java index e5e8a3b8..050dc613 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/FetchRandomSubredditOrPostActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/FetchRandomSubredditOrPostActivity.java @@ -94,7 +94,7 @@ public class FetchRandomSubredditOrPostActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/FilteredPostsActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/FilteredPostsActivity.java index 1305733b..b5a00239 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/FilteredPostsActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/FilteredPostsActivity.java @@ -254,7 +254,7 @@ public class FilteredPostsActivity extends BaseActivity implements SortTypeSelec } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/FullMarkdownActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/FullMarkdownActivity.java index e6084948..92d6589c 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/FullMarkdownActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/FullMarkdownActivity.java @@ -37,6 +37,7 @@ import io.noties.markwon.MarkwonPlugin; import io.noties.markwon.core.MarkwonTheme; import io.noties.markwon.recycler.MarkwonAdapter; import ml.docilealligator.infinityforreddit.Infinity; +import ml.docilealligator.infinityforreddit.MediaMetadata; import ml.docilealligator.infinityforreddit.R; import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper; import ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFixed; @@ -47,7 +48,6 @@ import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent; import ml.docilealligator.infinityforreddit.markdown.ImageAndGifEntry; import ml.docilealligator.infinityforreddit.markdown.ImageAndGifPlugin; import ml.docilealligator.infinityforreddit.markdown.MarkdownUtils; -import ml.docilealligator.infinityforreddit.post.Post; import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils; public class FullMarkdownActivity extends BaseActivity { @@ -149,7 +149,7 @@ public class FullMarkdownActivity extends BaseActivity { MarkwonAdapter markwonAdapter = MarkdownUtils.createTablesAdapter(new ImageAndGifEntry(this, Glide.with(this), new ImageAndGifEntry.OnItemClickListener() { @Override - public void onItemClick(Post.MediaMetadata mediaMetadata) { + public void onItemClick(MediaMetadata mediaMetadata) { } })); @@ -205,7 +205,7 @@ public class FullMarkdownActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/HistoryActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/HistoryActivity.java index 986e82f8..3a3a938e 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/HistoryActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/HistoryActivity.java @@ -140,7 +140,7 @@ public class HistoryActivity extends BaseActivity implements ActivityToolbarInte } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/InboxActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/InboxActivity.java index 38ecb45e..0a02d0e6 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/InboxActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/InboxActivity.java @@ -218,7 +218,7 @@ public class InboxActivity extends BaseActivity implements ActivityToolbarInterf } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LockScreenActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LockScreenActivity.java index 0224648c..d4e44233 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LockScreenActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LockScreenActivity.java @@ -89,7 +89,7 @@ public class LockScreenActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LoginActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LoginActivity.java index 5171ee04..7b1cb7cc 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LoginActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LoginActivity.java @@ -307,7 +307,7 @@ public class LoginActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java index d91d1c87..12a1dfce 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java @@ -353,7 +353,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MultiredditSelectionActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MultiredditSelectionActivity.java index c8d99a0b..25108607 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MultiredditSelectionActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MultiredditSelectionActivity.java @@ -135,7 +135,7 @@ public class MultiredditSelectionActivity extends BaseActivity implements Activi } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostFilterPreferenceActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostFilterPreferenceActivity.java index e54b9730..92108ae3 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostFilterPreferenceActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostFilterPreferenceActivity.java @@ -213,7 +213,7 @@ public class PostFilterPreferenceActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return customThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostFilterUsageListingActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostFilterUsageListingActivity.java index 37759e57..80f317dc 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostFilterUsageListingActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostFilterUsageListingActivity.java @@ -199,7 +199,7 @@ public class PostFilterUsageListingActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return customThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostGalleryActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostGalleryActivity.java index b5a63083..1d980bae 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostGalleryActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostGalleryActivity.java @@ -424,7 +424,7 @@ public class PostGalleryActivity extends BaseActivity implements FlairBottomShee } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostImageActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostImageActivity.java index 3c76b394..a1620880 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostImageActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostImageActivity.java @@ -426,7 +426,7 @@ public class PostImageActivity extends BaseActivity implements FlairBottomSheetF } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostLinkActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostLinkActivity.java index caa5c873..3bfb4573 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostLinkActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostLinkActivity.java @@ -401,7 +401,7 @@ public class PostLinkActivity extends BaseActivity implements FlairBottomSheetFr } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostPollActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostPollActivity.java index 1b9e3cc3..3ba6983c 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostPollActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostPollActivity.java @@ -405,7 +405,7 @@ public class PostPollActivity extends BaseActivity implements FlairBottomSheetFr } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostTextActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostTextActivity.java index 58968bc3..6205d54a 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostTextActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostTextActivity.java @@ -423,7 +423,7 @@ public class PostTextActivity extends BaseActivity implements FlairBottomSheetFr } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostVideoActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostVideoActivity.java index 7289835d..f405ad4c 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostVideoActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostVideoActivity.java @@ -443,7 +443,7 @@ public class PostVideoActivity extends BaseActivity implements FlairBottomSheetF } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ReportActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ReportActivity.java index 4f928827..58948363 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ReportActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ReportActivity.java @@ -189,7 +189,7 @@ public class ReportActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/RulesActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/RulesActivity.java index 54991517..7ffa36a5 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/RulesActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/RulesActivity.java @@ -161,7 +161,7 @@ public class RulesActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchActivity.java index 5e3426f8..fdedff7d 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchActivity.java @@ -398,7 +398,7 @@ public class SearchActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchResultActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchResultActivity.java index dc3da1d5..06a2567a 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchResultActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchResultActivity.java @@ -226,7 +226,7 @@ public class SearchResultActivity extends BaseActivity implements SortTypeSelect } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchSubredditsResultActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchSubredditsResultActivity.java index bef51c3e..58a098ba 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchSubredditsResultActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchSubredditsResultActivity.java @@ -131,7 +131,7 @@ public class SearchSubredditsResultActivity extends BaseActivity implements Acti } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchUsersResultActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchUsersResultActivity.java index 86f064e0..376f2975 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchUsersResultActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchUsersResultActivity.java @@ -130,7 +130,7 @@ public class SearchUsersResultActivity extends BaseActivity implements ActivityT } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SelectUserFlairActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SelectUserFlairActivity.java index 1dc61d96..1a0930fb 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SelectUserFlairActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SelectUserFlairActivity.java @@ -224,7 +224,7 @@ public class SelectUserFlairActivity extends BaseActivity implements ActivityToo } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SelectedSubredditsAndUsersActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SelectedSubredditsAndUsersActivity.java index bc89f1de..aa782922 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SelectedSubredditsAndUsersActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SelectedSubredditsAndUsersActivity.java @@ -186,7 +186,7 @@ public class SelectedSubredditsAndUsersActivity extends BaseActivity implements } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SendPrivateMessageActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SendPrivateMessageActivity.java index 0f12c15c..9bc8b422 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SendPrivateMessageActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SendPrivateMessageActivity.java @@ -167,7 +167,7 @@ public class SendPrivateMessageActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SettingsActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SettingsActivity.java index e0b584b4..801dd5a5 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SettingsActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SettingsActivity.java @@ -120,7 +120,7 @@ public class SettingsActivity extends BaseActivity implements } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubmitCrosspostActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubmitCrosspostActivity.java index 97c82b66..c72ad868 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubmitCrosspostActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubmitCrosspostActivity.java @@ -434,7 +434,7 @@ public class SubmitCrosspostActivity extends BaseActivity implements FlairBottom } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubredditMultiselectionActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubredditMultiselectionActivity.java index 0a36fe79..4c3fe53a 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubredditMultiselectionActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubredditMultiselectionActivity.java @@ -220,7 +220,7 @@ public class SubredditMultiselectionActivity extends BaseActivity implements Act } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubredditSelectionActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubredditSelectionActivity.java index 0fe3a7f6..297c80b7 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubredditSelectionActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubredditSelectionActivity.java @@ -176,7 +176,7 @@ public class SubredditSelectionActivity extends BaseActivity implements Activity } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubscribedThingListingActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubscribedThingListingActivity.java index 83df55cd..979e0731 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubscribedThingListingActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubscribedThingListingActivity.java @@ -207,7 +207,7 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SuicidePreventionActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SuicidePreventionActivity.java index 82f27104..4be5bdd2 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SuicidePreventionActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SuicidePreventionActivity.java @@ -73,7 +73,7 @@ public class SuicidePreventionActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/TrendingActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/TrendingActivity.java index c4ecdcfc..053f6be9 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/TrendingActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/TrendingActivity.java @@ -319,7 +319,7 @@ public class TrendingActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewMultiRedditDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewMultiRedditDetailActivity.java index 0b836895..e51058b3 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewMultiRedditDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewMultiRedditDetailActivity.java @@ -830,7 +830,7 @@ public class ViewMultiRedditDetailActivity extends BaseActivity implements SortT } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java index 76fec098..e88f9e22 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java @@ -324,7 +324,7 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPrivateMessagesActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPrivateMessagesActivity.java index a32fc8cc..1946aacb 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPrivateMessagesActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPrivateMessagesActivity.java @@ -302,7 +302,7 @@ public class ViewPrivateMessagesActivity extends BaseActivity implements Activit } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewSubredditDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewSubredditDetailActivity.java index 521b0dd1..9101cfbc 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewSubredditDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewSubredditDetailActivity.java @@ -508,7 +508,7 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewUserDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewUserDetailActivity.java index 2fb72f3f..52fedcb7 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewUserDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewUserDetailActivity.java @@ -594,7 +594,7 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } @@ -1708,15 +1708,6 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele } } - void giveAward(String awardsHTML, int position) { - if (fragmentManager != null) { - Fragment fragment = fragmentManager.findFragmentByTag("f1"); - if (fragment instanceof CommentsListingFragment) { - ((CommentsListingFragment) fragment).giveAward(awardsHTML, position); - } - } - } - void editComment(String commentMarkdown, int position) { if (fragmentManager != null) { Fragment fragment = fragmentManager.findFragmentByTag("f1"); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/WebViewActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/WebViewActivity.java index adff13a1..87d66393 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/WebViewActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/WebViewActivity.java @@ -115,7 +115,7 @@ public class WebViewActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/WikiActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/WikiActivity.java index 714dc5c1..16c1c748 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/WikiActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/WikiActivity.java @@ -43,6 +43,7 @@ import io.noties.markwon.core.MarkwonTheme; import io.noties.markwon.recycler.MarkwonAdapter; import me.saket.bettermovementmethod.BetterLinkMovementMethod; import ml.docilealligator.infinityforreddit.Infinity; +import ml.docilealligator.infinityforreddit.MediaMetadata; import ml.docilealligator.infinityforreddit.R; import ml.docilealligator.infinityforreddit.apis.RedditAPI; import ml.docilealligator.infinityforreddit.bottomsheetfragments.UrlMenuBottomSheetFragment; @@ -55,7 +56,6 @@ import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent; import ml.docilealligator.infinityforreddit.markdown.ImageAndGifEntry; import ml.docilealligator.infinityforreddit.markdown.ImageAndGifPlugin; import ml.docilealligator.infinityforreddit.markdown.MarkdownUtils; -import ml.docilealligator.infinityforreddit.post.Post; import ml.docilealligator.infinityforreddit.utils.JSONUtils; import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils; import ml.docilealligator.infinityforreddit.utils.Utils; @@ -186,7 +186,7 @@ public class WikiActivity extends BaseActivity { markwonAdapter = MarkdownUtils.createTablesAdapter(new ImageAndGifEntry(this, mGlide, new ImageAndGifEntry.OnItemClickListener() { @Override - public void onItemClick(Post.MediaMetadata mediaMetadata) { + public void onItemClick(MediaMetadata mediaMetadata) { } })); @@ -301,7 +301,7 @@ public class WikiActivity extends BaseActivity { } @Override - protected CustomThemeWrapper getCustomThemeWrapper() { + public CustomThemeWrapper getCustomThemeWrapper() { return mCustomThemeWrapper; } 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 76c0cc64..5abbbe8c 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsListingRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsListingRecyclerViewAdapter.java @@ -24,6 +24,7 @@ import androidx.recyclerview.widget.DiffUtil; import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.google.android.material.button.MaterialButton; import java.util.Locale; @@ -36,12 +37,14 @@ import io.noties.markwon.MarkwonConfiguration; import io.noties.markwon.MarkwonPlugin; import io.noties.markwon.core.MarkwonTheme; import me.saket.bettermovementmethod.BetterLinkMovementMethod; +import ml.docilealligator.infinityforreddit.MediaMetadata; 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.BaseActivity; import ml.docilealligator.infinityforreddit.activities.LinkResolverActivity; +import ml.docilealligator.infinityforreddit.activities.ViewImageOrGifActivity; import ml.docilealligator.infinityforreddit.activities.ViewPostDetailActivity; import ml.docilealligator.infinityforreddit.activities.ViewSubredditDetailActivity; import ml.docilealligator.infinityforreddit.bottomsheetfragments.CommentMoreBottomSheetFragment; @@ -55,6 +58,7 @@ import ml.docilealligator.infinityforreddit.customviews.SpoilerOnClickTextView; import ml.docilealligator.infinityforreddit.customviews.SwipeLockInterface; import ml.docilealligator.infinityforreddit.customviews.SwipeLockLinearLayoutManager; import ml.docilealligator.infinityforreddit.databinding.ItemCommentBinding; +import ml.docilealligator.infinityforreddit.markdown.ImageAndGifEntry; import ml.docilealligator.infinityforreddit.markdown.ImageAndGifPlugin; import ml.docilealligator.infinityforreddit.markdown.MarkdownUtils; import ml.docilealligator.infinityforreddit.utils.APIUtils; @@ -82,6 +86,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment private Locale mLocale; private ImageAndGifPlugin mImageAndGifPlugin; private Markwon mMarkwon; + private ImageAndGifEntry mImageAndGifEntry; private RecyclerView.RecycledViewPool recycledViewPool; private String mAccessToken; private String mAccountName; @@ -103,13 +108,15 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment private String mTimeFormatPattern; private boolean mShowCommentDivider; private boolean mShowAbsoluteNumberOfVotes; + private boolean canStartActivity = true; private NetworkState networkState; private RetryLoadingMoreCallback mRetryLoadingMoreCallback; public CommentsListingRecyclerViewAdapter(BaseActivity activity, Retrofit oauthRetrofit, CustomThemeWrapper customThemeWrapper, Locale locale, SharedPreferences sharedPreferences, String accessToken, - String accountName, RetryLoadingMoreCallback retryLoadingMoreCallback) { + String accountName, String username, + RetryLoadingMoreCallback retryLoadingMoreCallback) { super(DIFF_CALLBACK); mActivity = activity; mOauthRetrofit = oauthRetrofit; @@ -173,6 +180,23 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment mImageAndGifPlugin = new ImageAndGifPlugin(); mMarkwon = MarkdownUtils.createFullRedditMarkwon(mActivity, miscPlugin, mImageAndGifPlugin, mCommentColor, commentSpoilerBackgroundColor, onLinkLongClickListener); + mImageAndGifEntry = new ImageAndGifEntry(activity, Glide.with(activity), new ImageAndGifEntry.OnItemClickListener() { + @Override + public void onItemClick(MediaMetadata mediaMetadata) { + Intent intent = new Intent(activity, ViewImageOrGifActivity.class); + if (mediaMetadata.isGIF) { + intent.putExtra(ViewImageOrGifActivity.EXTRA_IMAGE_URL_KEY, mediaMetadata.original.url); + } else { + intent.putExtra(ViewImageOrGifActivity.EXTRA_GIF_URL_KEY, mediaMetadata.original.url); + } + intent.putExtra(ViewImageOrGifActivity.EXTRA_SUBREDDIT_OR_USERNAME_KEY, username); + intent.putExtra(ViewImageOrGifActivity.EXTRA_FILE_NAME_KEY, mediaMetadata.fileName); + if (canStartActivity) { + canStartActivity = false; + activity.startActivity(intent); + } + } + }); recycledViewPool = new RecyclerView.RecycledViewPool(); } @@ -217,6 +241,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment Utils.setHTMLWithImageToTextView(((CommentBaseViewHolder) holder).awardsTextView, comment.getAwards(), true); } + mImageAndGifPlugin.setMediaMetadataMap(comment.getMediaMetadataMap()); ((CommentBaseViewHolder) holder).markwonAdapter.setMarkdown(mMarkwon, comment.getCommentMarkdown()); // noinspection NotifyDataSetChanged ((CommentBaseViewHolder) holder).markwonAdapter.notifyDataSetChanged(); @@ -327,16 +352,6 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment } } - public void giveAward(String awardsHTML, int position) { - if (position >= 0 && position < getItemCount()) { - Comment comment = getItem(position); - if (comment != null) { - comment.addAwards(awardsHTML); - notifyItemChanged(position); - } - } - } - public void editComment(String commentContentMarkdown, int position) { Comment comment = getItem(position); if (comment != null) { @@ -345,6 +360,10 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment } } + public void setCanStartActivity(boolean canStartActivity) { + this.canStartActivity = canStartActivity; + } + public interface RetryLoadingMoreCallback { void retryLoadingMore(); } @@ -533,7 +552,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment } }); commentMarkdownView.setLayoutManager(linearLayoutManager); - markwonAdapter = MarkdownUtils.createCustomTablesAdapter(); + markwonAdapter = MarkdownUtils.createCustomTablesAdapter(mImageAndGifEntry); markwonAdapter.setOnClickListener(view -> { if (view instanceof SpoilerOnClickTextView) { if (((SpoilerOnClickTextView) view).isSpoilerOnClick()) { @@ -541,7 +560,10 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment return; } } - itemView.callOnClick(); + if (canStartActivity) { + canStartActivity = false; + itemView.callOnClick(); + } }); commentMarkdownView.setAdapter(markwonAdapter); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsRecyclerViewAdapter.java index 85ba9dae..9702bfb8 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsRecyclerViewAdapter.java @@ -45,6 +45,7 @@ import io.noties.markwon.MarkwonPlugin; import io.noties.markwon.core.MarkwonTheme; import jp.wasabeef.glide.transformations.RoundedCornersTransformation; import me.saket.bettermovementmethod.BetterLinkMovementMethod; +import ml.docilealligator.infinityforreddit.MediaMetadata; import ml.docilealligator.infinityforreddit.R; import ml.docilealligator.infinityforreddit.SaveThing; import ml.docilealligator.infinityforreddit.SortType; @@ -52,6 +53,7 @@ import ml.docilealligator.infinityforreddit.VoteThing; import ml.docilealligator.infinityforreddit.activities.BaseActivity; import ml.docilealligator.infinityforreddit.activities.CommentActivity; import ml.docilealligator.infinityforreddit.activities.LinkResolverActivity; +import ml.docilealligator.infinityforreddit.activities.ViewImageOrGifActivity; import ml.docilealligator.infinityforreddit.activities.ViewPostDetailActivity; import ml.docilealligator.infinityforreddit.activities.ViewUserDetailActivity; import ml.docilealligator.infinityforreddit.bottomsheetfragments.CommentMoreBottomSheetFragment; @@ -67,6 +69,7 @@ import ml.docilealligator.infinityforreddit.customviews.SwipeLockInterface; import ml.docilealligator.infinityforreddit.customviews.SwipeLockLinearLayoutManager; import ml.docilealligator.infinityforreddit.databinding.ItemCommentBinding; import ml.docilealligator.infinityforreddit.fragments.ViewPostDetailFragment; +import ml.docilealligator.infinityforreddit.markdown.ImageAndGifEntry; import ml.docilealligator.infinityforreddit.markdown.ImageAndGifPlugin; import ml.docilealligator.infinityforreddit.markdown.MarkdownUtils; import ml.docilealligator.infinityforreddit.post.Post; @@ -96,6 +99,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi private Retrofit mOauthRetrofit; private ImageAndGifPlugin mImageAndGifPlugin; private Markwon mCommentMarkwon; + private ImageAndGifEntry mImageAndGifEntry; private String mAccessToken; private String mAccountName; private Post mPost; @@ -154,6 +158,8 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi private int mSearchCommentIndex = -1; + private boolean canStartActivity = true; + public CommentsRecyclerViewAdapter(BaseActivity activity, ViewPostDetailFragment fragment, CustomThemeWrapper customThemeWrapper, Executor executor, Retrofit retrofit, Retrofit oauthRetrofit, @@ -208,6 +214,24 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi mImageAndGifPlugin = new ImageAndGifPlugin(); mCommentMarkwon = MarkdownUtils.createFullRedditMarkwon(mActivity, miscPlugin, mImageAndGifPlugin, mCommentTextColor, commentSpoilerBackgroundColor, onLinkLongClickListener); + mImageAndGifEntry = new ImageAndGifEntry(activity, mGlide, new ImageAndGifEntry.OnItemClickListener() { + @Override + public void onItemClick(MediaMetadata mediaMetadata) { + Intent intent = new Intent(activity, ViewImageOrGifActivity.class); + if (mediaMetadata.isGIF) { + intent.putExtra(ViewImageOrGifActivity.EXTRA_IMAGE_URL_KEY, mediaMetadata.original.url); + } else { + intent.putExtra(ViewImageOrGifActivity.EXTRA_GIF_URL_KEY, mediaMetadata.original.url); + } + intent.putExtra(ViewImageOrGifActivity.EXTRA_IS_NSFW, post.isNSFW()); + intent.putExtra(ViewImageOrGifActivity.EXTRA_SUBREDDIT_OR_USERNAME_KEY, post.getSubredditName()); + intent.putExtra(ViewImageOrGifActivity.EXTRA_FILE_NAME_KEY, mediaMetadata.fileName); + if (canStartActivity) { + canStartActivity = false; + activity.startActivity(intent); + } + } + }); recycledViewPool = new RecyclerView.RecycledViewPool(); mAccessToken = accessToken; mAccountName = accountName; @@ -442,6 +466,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi Utils.setHTMLWithImageToTextView(((CommentBaseViewHolder) holder).awardsTextView, comment.getAwards(), true); } + mImageAndGifPlugin.setMediaMetadataMap(comment.getMediaMetadataMap()); ((CommentBaseViewHolder) holder).mMarkwonAdapter.setMarkdown(mCommentMarkwon, comment.getCommentMarkdown()); // noinspection NotifyDataSetChanged ((CommentBaseViewHolder) holder).mMarkwonAdapter.notifyDataSetChanged(); @@ -773,6 +798,10 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi } } + public void setCanStartActivity(boolean canStartActivity) { + this.canStartActivity = canStartActivity; + } + private int getParentPosition(int position) { if (position >= 0 && position < mVisibleComments.size()) { int childDepth = mVisibleComments.get(position).getDepth(); @@ -1319,7 +1348,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi } }); commentMarkdownView.setLayoutManager(linearLayoutManager); - mMarkwonAdapter = MarkdownUtils.createCustomTablesAdapter(); + mMarkwonAdapter = MarkdownUtils.createCustomTablesAdapter(mImageAndGifEntry); commentMarkdownView.setAdapter(mMarkwonAdapter); itemView.setBackgroundColor(mCommentBackgroundColor); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/RulesRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/RulesRecyclerViewAdapter.java index a2dac6d9..02b88c0f 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/RulesRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/RulesRecyclerViewAdapter.java @@ -25,6 +25,7 @@ import io.noties.markwon.MarkwonPlugin; import io.noties.markwon.core.MarkwonTheme; import io.noties.markwon.recycler.MarkwonAdapter; import me.saket.bettermovementmethod.BetterLinkMovementMethod; +import ml.docilealligator.infinityforreddit.MediaMetadata; import ml.docilealligator.infinityforreddit.R; import ml.docilealligator.infinityforreddit.Rule; import ml.docilealligator.infinityforreddit.activities.BaseActivity; @@ -37,7 +38,6 @@ import ml.docilealligator.infinityforreddit.customviews.slidr.widget.SliderPanel import ml.docilealligator.infinityforreddit.markdown.ImageAndGifEntry; import ml.docilealligator.infinityforreddit.markdown.ImageAndGifPlugin; import ml.docilealligator.infinityforreddit.markdown.MarkdownUtils; -import ml.docilealligator.infinityforreddit.post.Post; public class RulesRecyclerViewAdapter extends RecyclerView.Adapter<RulesRecyclerViewAdapter.RuleViewHolder> { private BaseActivity activity; @@ -147,7 +147,7 @@ public class RulesRecyclerViewAdapter extends RecyclerView.Adapter<RulesRecycler Glide.with(activity), new ImageAndGifEntry.OnItemClickListener() { @Override - public void onItemClick(Post.MediaMetadata mediaMetadata) { + public void onItemClick(MediaMetadata mediaMetadata) { } })); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/comment/Comment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/comment/Comment.java index 8d981a44..12584a38 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/comment/Comment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/comment/Comment.java @@ -4,8 +4,10 @@ import android.os.Parcel; import android.os.Parcelable; import java.util.ArrayList; +import java.util.Map; import ml.docilealligator.infinityforreddit.BuildConfig; +import ml.docilealligator.infinityforreddit.MediaMetadata; import ml.docilealligator.infinityforreddit.utils.APIUtils; public class Comment implements Parcelable { @@ -59,6 +61,7 @@ public class Comment implements Parcelable { private boolean isLoadingMoreChildren; private boolean loadMoreChildrenFailed; private long editedTimeMillis; + private Map<String, MediaMetadata> mediaMetadataMap; public Comment(String id, String fullName, String author, String authorFlair, String authorFlairHTML, String linkAuthor, @@ -66,7 +69,7 @@ public class Comment implements Parcelable { String linkId, String subredditName, String parentId, int score, int voteType, boolean isSubmitter, String distinguished, String permalink, String awards, int depth, boolean collapsed, boolean hasReply, - boolean scoreHidden, boolean saved, long edited) { + boolean scoreHidden, boolean saved, long edited, Map<String, MediaMetadata> mediaMetadataMap) { this.id = id; this.fullName = fullName; this.author = author; @@ -93,6 +96,7 @@ public class Comment implements Parcelable { this.isExpanded = false; this.hasExpandedBefore = false; this.editedTimeMillis = edited; + this.mediaMetadataMap = mediaMetadataMap; placeholderType = NOT_PLACEHOLDER; } @@ -147,6 +151,7 @@ public class Comment implements Parcelable { placeholderType = in.readInt(); isLoadingMoreChildren = in.readByte() != 0; loadMoreChildrenFailed = in.readByte() != 0; + mediaMetadataMap = (Map<String, MediaMetadata>) in.readValue(getClass().getClassLoader()); } public String getId() { @@ -398,6 +403,18 @@ public class Comment implements Parcelable { this.loadMoreChildrenFailed = loadMoreChildrenFailed; } + public boolean isEdited() { + return editedTimeMillis != 0; + } + + public long getEditedTimeMillis() { + return editedTimeMillis; + } + + public Map<String, MediaMetadata> getMediaMetadataMap() { + return mediaMetadataMap; + } + @Override public int describeContents() { return 0; @@ -436,12 +453,6 @@ public class Comment implements Parcelable { parcel.writeInt(placeholderType); parcel.writeByte((byte) (isLoadingMoreChildren ? 1 : 0)); parcel.writeByte((byte) (loadMoreChildrenFailed ? 1 : 0)); - } - - public boolean isEdited() { - return editedTimeMillis != 0; - } - public long getEditedTimeMillis() { - return editedTimeMillis; + parcel.writeValue(mediaMetadataMap); } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/comment/ParseComment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/comment/ParseComment.java index 01d3f95f..4ba92570 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/comment/ParseComment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/comment/ParseComment.java @@ -15,9 +15,13 @@ import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.concurrent.Executor; +import ml.docilealligator.infinityforreddit.MediaMetadata; import ml.docilealligator.infinityforreddit.commentfilter.CommentFilter; import ml.docilealligator.infinityforreddit.utils.JSONUtils; import ml.docilealligator.infinityforreddit.utils.Utils; @@ -267,7 +271,10 @@ public class ParseComment { String distinguished = singleCommentData.getString(JSONUtils.DISTINGUISHED_KEY); String commentMarkdown = ""; if (!singleCommentData.isNull(JSONUtils.BODY_KEY)) { - commentMarkdown = Utils.parseInlineGifInComments(Utils.modifyMarkdown(Utils.trimTrailingWhitespace(singleCommentData.getString(JSONUtils.BODY_KEY)))); + commentMarkdown = Utils.parseInlineRedditImages( + Utils.parseInlineGifInComments( + Utils.modifyMarkdown( + Utils.trimTrailingWhitespace(singleCommentData.getString(JSONUtils.BODY_KEY))))); if (!singleCommentData.isNull(JSONUtils.MEDIA_METADATA_KEY)) { JSONObject mediaMetadataObject = singleCommentData.getJSONObject(JSONUtils.MEDIA_METADATA_KEY); commentMarkdown = Utils.parseInlineEmotes(commentMarkdown, mediaMetadataObject); @@ -312,10 +319,62 @@ public class ParseComment { // this key can either be a bool (false) or a long (edited timestamp) long edited = singleCommentData.optLong(JSONUtils.EDITED_KEY) * 1000; + Map<String, MediaMetadata> mediaMetadataMap = parseMediaMetadata(singleCommentData); + return new Comment(id, fullName, author, authorFlair, authorFlairHTMLBuilder.toString(), linkAuthor, submitTime, commentMarkdown, commentRawText, linkId, subredditName, parentId, score, voteType, isSubmitter, distinguished, - permalink, awardingsBuilder.toString(), depth, collapsed, hasReply, scoreHidden, saved, edited); + permalink, awardingsBuilder.toString(), depth, collapsed, hasReply, scoreHidden, saved, edited, + mediaMetadataMap); + } + + @Nullable + private static Map<String, MediaMetadata> parseMediaMetadata(JSONObject data) { + try { + if (data.has(JSONUtils.MEDIA_METADATA_KEY)) { + Map<String, MediaMetadata> mediaMetadataMap = new HashMap<>(); + JSONObject mediaMetadataJSON = data.getJSONObject(JSONUtils.MEDIA_METADATA_KEY); + for (Iterator<String> it = mediaMetadataJSON.keys(); it.hasNext();) { + try { + String k = it.next(); + JSONObject media = mediaMetadataJSON.getJSONObject(k); + String e = media.getString(JSONUtils.E_KEY); + JSONArray downscales = media.getJSONArray(JSONUtils.P_KEY); + JSONObject downscaledItemJSON; + if (downscales.length() <= 3) { + downscaledItemJSON = downscales.getJSONObject(downscales.length() - 1); + } else { + downscaledItemJSON = downscales.getJSONObject(3); + } + MediaMetadata.MediaItem downscaledItem = new MediaMetadata.MediaItem(downscaledItemJSON.getInt(JSONUtils.X_KEY), + downscaledItemJSON.getInt(JSONUtils.Y_KEY), downscaledItemJSON.getString(JSONUtils.U_KEY)); + if (e.equalsIgnoreCase("Image")) { + JSONObject originalItemJSON = media.getJSONObject(JSONUtils.S_KEY); + MediaMetadata.MediaItem originalItem = new MediaMetadata.MediaItem(originalItemJSON.getInt(JSONUtils.X_KEY), + originalItemJSON.getInt(JSONUtils.Y_KEY), originalItemJSON.getString(JSONUtils.U_KEY)); + + String id = media.getString(JSONUtils.ID_KEY); + mediaMetadataMap.put(id, new MediaMetadata(id, e, originalItem, downscaledItem)); + } else if (e.equalsIgnoreCase("AnimatedImage")) { + JSONObject originalItemJSON = media.getJSONObject(JSONUtils.S_KEY); + MediaMetadata.MediaItem originalItem = new MediaMetadata.MediaItem(originalItemJSON.getInt(JSONUtils.X_KEY), + originalItemJSON.getInt(JSONUtils.Y_KEY), originalItemJSON.getString(JSONUtils.GIF_KEY), + originalItemJSON.getString(JSONUtils.MP4_KEY)); + + String id = media.getString(JSONUtils.ID_KEY); + mediaMetadataMap.put(id, new MediaMetadata(id, e, originalItem, downscaledItem)); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } + return mediaMetadataMap; + } + } catch (JSONException e) { + e.printStackTrace(); + } + + return null; } @Nullable diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/customviews/CustomMarkwonAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/customviews/CustomMarkwonAdapter.java index fb10d036..48432ff8 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/customviews/CustomMarkwonAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/customviews/CustomMarkwonAdapter.java @@ -23,6 +23,7 @@ import io.noties.markwon.MarkwonReducer; import io.noties.markwon.recycler.MarkwonAdapter; import io.noties.markwon.recycler.SimpleEntry; import ml.docilealligator.infinityforreddit.R; +import ml.docilealligator.infinityforreddit.markdown.ImageAndGifBlock; public class CustomMarkwonAdapter extends MarkwonAdapter { private final SparseArray<Entry<Node, Holder>> entries; @@ -137,6 +138,10 @@ public class CustomMarkwonAdapter extends MarkwonAdapter { } } } + + if (node instanceof ImageAndGifBlock && !holder.itemView.hasOnClickListeners()) { + holder.itemView.setOnClickListener(onClickListener); + } } @Override 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 23440d2c..fe5f3b66 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/CommentsListingFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/CommentsListingFragment.java @@ -262,11 +262,6 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni mLinearLayoutManager = new LinearLayoutManagerBugFixed(mActivity); mCommentRecyclerView.setLayoutManager(mLinearLayoutManager); - mAdapter = new CommentsListingRecyclerViewAdapter(mActivity, mOauthRetrofit, customThemeWrapper, - getResources().getConfiguration().locale, mSharedPreferences, - getArguments().getString(EXTRA_ACCESS_TOKEN), getArguments().getString(EXTRA_ACCOUNT_NAME), - () -> mCommentViewModel.retryLoadingMore()); - String username = getArguments().getString(EXTRA_USERNAME); String sort = mSortTypeSharedPreferences.getString(SharedPreferencesUtils.SORT_TYPE_USER_COMMENT, SortType.Type.NEW.name()); if (sort.equals(SortType.Type.CONTROVERSIAL.name()) || sort.equals(SortType.Type.TOP.name())) { @@ -276,6 +271,11 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni sortType = new SortType(SortType.Type.valueOf(sort.toUpperCase())); } + mAdapter = new CommentsListingRecyclerViewAdapter(mActivity, mOauthRetrofit, customThemeWrapper, + getResources().getConfiguration().locale, mSharedPreferences, + getArguments().getString(EXTRA_ACCESS_TOKEN), getArguments().getString(EXTRA_ACCOUNT_NAME), + username, () -> mCommentViewModel.retryLoadingMore()); + mCommentRecyclerView.setAdapter(mAdapter); if (mActivity instanceof RecyclerViewContentScrollingInterface) { @@ -334,6 +334,14 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni } } + @Override + public void onResume() { + super.onResume(); + if (mAdapter != null) { + mAdapter.setCanStartActivity(true); + } + } + public void changeSortType(SortType sortType) { mCommentViewModel.changeSortType(sortType); this.sortType = sortType; @@ -399,12 +407,6 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni return sortType; } - public void giveAward(String awardsHTML, int position) { - if (mAdapter != null) { - mAdapter.giveAward(awardsHTML, position); - } - } - public void editComment(String commentMarkdown, int position) { if (mAdapter != null) { mAdapter.editComment(commentMarkdown, position); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/SidebarFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/SidebarFragment.java index 81653baa..3b42ee22 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/SidebarFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/SidebarFragment.java @@ -35,6 +35,7 @@ import io.noties.markwon.core.MarkwonTheme; import io.noties.markwon.recycler.MarkwonAdapter; import me.saket.bettermovementmethod.BetterLinkMovementMethod; import ml.docilealligator.infinityforreddit.Infinity; +import ml.docilealligator.infinityforreddit.MediaMetadata; import ml.docilealligator.infinityforreddit.R; import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase; import ml.docilealligator.infinityforreddit.activities.LinkResolverActivity; @@ -47,7 +48,6 @@ import ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFi import ml.docilealligator.infinityforreddit.markdown.ImageAndGifEntry; import ml.docilealligator.infinityforreddit.markdown.ImageAndGifPlugin; import ml.docilealligator.infinityforreddit.markdown.MarkdownUtils; -import ml.docilealligator.infinityforreddit.post.Post; import ml.docilealligator.infinityforreddit.subreddit.FetchSubredditData; import ml.docilealligator.infinityforreddit.subreddit.SubredditData; import ml.docilealligator.infinityforreddit.subreddit.SubredditViewModel; @@ -153,7 +153,7 @@ public class SidebarFragment extends Fragment { Glide.with(this), new ImageAndGifEntry.OnItemClickListener() { @Override - public void onItemClick(Post.MediaMetadata mediaMetadata) { + public void onItemClick(MediaMetadata mediaMetadata) { } })); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java index 0a220c6d..902bffca 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java @@ -1205,6 +1205,9 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic if (mPostAdapter != null) { mPostAdapter.setCanStartActivity(true); } + if (mCommentsAdapter != null) { + mCommentsAdapter.setCanStartActivity(true); + } if (mRecyclerView != null) { mRecyclerView.onWindowVisibilityChanged(View.VISIBLE); } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/ImageAndGifBlock.java b/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/ImageAndGifBlock.java index ce456f92..d336c5b4 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/ImageAndGifBlock.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/ImageAndGifBlock.java @@ -2,12 +2,12 @@ package ml.docilealligator.infinityforreddit.markdown; import org.commonmark.node.CustomBlock; -import ml.docilealligator.infinityforreddit.post.Post; +import ml.docilealligator.infinityforreddit.MediaMetadata; public class ImageAndGifBlock extends CustomBlock { - public Post.MediaMetadata mediaMetadata; + public MediaMetadata mediaMetadata; - public ImageAndGifBlock(Post.MediaMetadata mediaMetadata) { + public ImageAndGifBlock(MediaMetadata mediaMetadata) { this.mediaMetadata = mediaMetadata; } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/ImageAndGifBlockParser.java b/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/ImageAndGifBlockParser.java index 029a5b83..d45aa177 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/ImageAndGifBlockParser.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/ImageAndGifBlockParser.java @@ -12,13 +12,13 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -import ml.docilealligator.infinityforreddit.post.Post; +import ml.docilealligator.infinityforreddit.MediaMetadata; public class ImageAndGifBlockParser extends AbstractBlockParser { private ImageAndGifBlock imageAndGifBlock; - ImageAndGifBlockParser(Post.MediaMetadata mediaMetadata) { + ImageAndGifBlockParser(MediaMetadata mediaMetadata) { this.imageAndGifBlock = new ImageAndGifBlock(mediaMetadata); } @@ -34,7 +34,8 @@ public class ImageAndGifBlockParser extends AbstractBlockParser { public static class Factory extends AbstractBlockParserFactory { private final Pattern redditPreviewPattern = Pattern.compile("!\\[img]\\(https://preview.redd.it/\\w+.(jpg|png)((\\?+[-a-zA-Z0-9()@:%_+.~#?&/=]*)|)\\)"); - private Map<String, Post.MediaMetadata> mediaMetadataMap; + private final Pattern gifPattern = Pattern.compile("!\\[gif]\\(giphy\\|\\w+(\\|downsized)?\\)"); + private Map<String, MediaMetadata> mediaMetadataMap; private final int fromIndex = "![img](https://preview.redd.it/".length(); @Override @@ -50,10 +51,18 @@ public class ImageAndGifBlockParser extends AbstractBlockParser { } } } + + matcher = gifPattern.matcher(line); + if (matcher.find()) { + if (matcher.end() == line.length()) { + String id = line.substring("![gif](".length(), line.length() - 1); + return mediaMetadataMap.containsKey(id) ? BlockStart.of(new ImageAndGifBlockParser(mediaMetadataMap.get(id))) : BlockStart.none(); + } + } return BlockStart.none(); } - public void setMediaMetadataMap(Map<String, Post.MediaMetadata> mediaMetadataMap) { + public void setMediaMetadataMap(Map<String, MediaMetadata> mediaMetadataMap) { this.mediaMetadataMap = mediaMetadataMap; } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/ImageAndGifEntry.java b/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/ImageAndGifEntry.java index 89e3dcce..77e470cd 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/ImageAndGifEntry.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/ImageAndGifEntry.java @@ -1,6 +1,7 @@ package ml.docilealligator.infinityforreddit.markdown; import android.content.SharedPreferences; +import android.content.res.ColorStateList; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; @@ -20,10 +21,10 @@ import com.bumptech.glide.request.target.Target; import io.noties.markwon.Markwon; import io.noties.markwon.recycler.MarkwonAdapter; import jp.wasabeef.glide.transformations.BlurTransformation; +import ml.docilealligator.infinityforreddit.MediaMetadata; import ml.docilealligator.infinityforreddit.SaveMemoryCenterInisdeDownsampleStrategy; import ml.docilealligator.infinityforreddit.activities.BaseActivity; import ml.docilealligator.infinityforreddit.databinding.MarkdownImageAndGifBlockBinding; -import ml.docilealligator.infinityforreddit.post.Post; import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils; import ml.docilealligator.infinityforreddit.utils.Utils; @@ -34,6 +35,7 @@ public class ImageAndGifEntry extends MarkwonAdapter.Entry<ImageAndGifBlock, Ima private OnItemClickListener onItemClickListener; private boolean dataSavingMode; private boolean blurImage; + private int colorAccent; public ImageAndGifEntry(BaseActivity baseActivity, RequestManager glide, OnItemClickListener onItemClickListener) { @@ -43,7 +45,7 @@ public class ImageAndGifEntry extends MarkwonAdapter.Entry<ImageAndGifBlock, Ima this.saveMemoryCenterInsideDownsampleStrategy = new SaveMemoryCenterInisdeDownsampleStrategy( Integer.parseInt(sharedPreferences.getString(SharedPreferencesUtils.POST_FEED_MAX_RESOLUTION, "5000000"))); this.onItemClickListener = onItemClickListener; - + colorAccent = baseActivity.getCustomThemeWrapper().getColorAccent(); String dataSavingModeString = sharedPreferences.getString(SharedPreferencesUtils.DATA_SAVING_MODE, SharedPreferencesUtils.DATA_SAVING_MODE_OFF); if (dataSavingModeString.equals(SharedPreferencesUtils.DATA_SAVING_MODE_ALWAYS)) { dataSavingMode = true; @@ -56,6 +58,7 @@ public class ImageAndGifEntry extends MarkwonAdapter.Entry<ImageAndGifBlock, Ima OnItemClickListener onItemClickListener) { this.baseActivity = baseActivity; this.glide = glide; + SharedPreferences sharedPreferences = baseActivity.getDefaultSharedPreferences(); this.saveMemoryCenterInsideDownsampleStrategy = new SaveMemoryCenterInisdeDownsampleStrategy( Integer.parseInt(sharedPreferences.getString(SharedPreferencesUtils.POST_FEED_MAX_RESOLUTION, "5000000"))); @@ -76,6 +79,12 @@ public class ImageAndGifEntry extends MarkwonAdapter.Entry<ImageAndGifBlock, Ima holder.binding.progressBarMarkdownImageAndGifBlock.setVisibility(View.VISIBLE); + if (node.mediaMetadata.isGIF) { + ViewGroup.LayoutParams params = holder.binding.imageViewMarkdownImageAndGifBlock.getLayoutParams(); + params.width = (int) Utils.convertDpToPixel(160, baseActivity); + holder.binding.imageViewMarkdownImageAndGifBlock.setLayoutParams(params); + } + RequestBuilder<Drawable> imageRequestBuilder; if (dataSavingMode) { imageRequestBuilder = glide.load(node.mediaMetadata.downscaled.url).listener(holder.requestListener); @@ -85,7 +94,7 @@ public class ImageAndGifEntry extends MarkwonAdapter.Entry<ImageAndGifBlock, Ima holder.binding.imageViewMarkdownImageAndGifBlock.setRatio((float) node.mediaMetadata.original.y / node.mediaMetadata.original.x); } - if (blurImage) { + if (blurImage && !node.mediaMetadata.isGIF) { imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10))) .into(holder.binding.imageViewMarkdownImageAndGifBlock); } else { @@ -96,6 +105,10 @@ public class ImageAndGifEntry extends MarkwonAdapter.Entry<ImageAndGifBlock, Ima @Override public void onViewRecycled(@NonNull Holder holder) { super.onViewRecycled(holder); + ViewGroup.LayoutParams params = holder.binding.imageViewMarkdownImageAndGifBlock.getLayoutParams(); + params.width = ViewGroup.LayoutParams.MATCH_PARENT; + holder.binding.imageViewMarkdownImageAndGifBlock.setLayoutParams(params); + glide.clear(holder.binding.imageViewMarkdownImageAndGifBlock); holder.binding.progressBarMarkdownImageAndGifBlock.setVisibility(View.GONE); holder.binding.loadImageErrorTextViewMarkdownImageAndGifBlock.setVisibility(View.GONE); @@ -110,6 +123,8 @@ public class ImageAndGifEntry extends MarkwonAdapter.Entry<ImageAndGifBlock, Ima super(binding.getRoot()); this.binding = binding; + binding.progressBarMarkdownImageAndGifBlock.setIndeterminateTintList(ColorStateList.valueOf(colorAccent)); + requestListener = new RequestListener<>() { @Override public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) { @@ -124,27 +139,14 @@ public class ImageAndGifEntry extends MarkwonAdapter.Entry<ImageAndGifBlock, Ima return false; } }; - binding.getRoot().setOnClickListener(view -> { + + binding.imageViewMarkdownImageAndGifBlock.setOnClickListener(view -> { if (imageAndGifBlock != null) { onItemClickListener.onItemClick(imageAndGifBlock.mediaMetadata); } }); } - /*private final RequestListener<Drawable> requestListener = new RequestListener<Drawable>() { - @Override - public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) { - binding.progressBar.setVisibility(View.GONE); - return false; - } - - @Override - public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) { - binding.progressBar.setVisibility(View.GONE); - return false; - } - };*/ - /*public Holder(@NonNull AdapterGifEntryBinding binding) { super(binding.getRoot()); this.binding = binding; @@ -216,35 +218,10 @@ public class ImageAndGifEntry extends MarkwonAdapter.Entry<ImageAndGifBlock, Ima .addListener(requestListener) .error(R.drawable.ic_error_outline_black_24dp) .into(target); - } - - void recycle() { - glide.clear(binding.iv); - } - - @SuppressWarnings("SameParameterValue") - private int dpToPx(int dp) { - float density = itemView.getContext().getResources().getDisplayMetrics().density; - return (int) (dp * density); - } - - private boolean canLoadGif() { - // ideally this would be injected, but it is a bit unpleasant to do - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(itemView.getContext()); - String dataSavingMode = sharedPreferences.getString(SharedPreferencesUtils.DATA_SAVING_MODE, SharedPreferencesUtils.DATA_SAVING_MODE_OFF); - Log.i("GifEntry", "datasaving=" + dataSavingMode); - if (dataSavingMode.equals(SharedPreferencesUtils.DATA_SAVING_MODE_ALWAYS)) { - return false; - } else if (dataSavingMode.equals(SharedPreferencesUtils.DATA_SAVING_MODE_ONLY_ON_CELLULAR_DATA)) { - int networkType = Utils.getConnectedNetwork(itemView.getContext()); - return networkType != Utils.NETWORK_TYPE_CELLULAR; - } else { - return true; - } }*/ } public interface OnItemClickListener { - void onItemClick(Post.MediaMetadata mediaMetadata); + void onItemClick(MediaMetadata mediaMetadata); } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/ImageAndGifPlugin.java b/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/ImageAndGifPlugin.java index 86209454..754ffc14 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/ImageAndGifPlugin.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/ImageAndGifPlugin.java @@ -1,7 +1,5 @@ package ml.docilealligator.infinityforreddit.markdown; -import android.util.Log; - import androidx.annotation.NonNull; import org.commonmark.parser.Parser; @@ -9,7 +7,7 @@ import org.commonmark.parser.Parser; import java.util.Map; import io.noties.markwon.AbstractMarkwonPlugin; -import ml.docilealligator.infinityforreddit.post.Post; +import ml.docilealligator.infinityforreddit.MediaMetadata; public class ImageAndGifPlugin extends AbstractMarkwonPlugin { @@ -22,7 +20,6 @@ public class ImageAndGifPlugin extends AbstractMarkwonPlugin { @NonNull @Override public String processMarkdown(@NonNull String markdown) { - Log.i("asdfa", "imageandgifplugin " + markdown + "ooooo"); return super.processMarkdown(markdown); } @@ -31,7 +28,7 @@ public class ImageAndGifPlugin extends AbstractMarkwonPlugin { builder.customBlockParserFactory(factory); } - public void setMediaMetadataMap(Map<String, Post.MediaMetadata> mediaMetadataMap) { + public void setMediaMetadataMap(Map<String, MediaMetadata> mediaMetadataMap) { factory.setMediaMetadataMap(mediaMetadataMap); } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/MarkdownUtils.java b/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/MarkdownUtils.java index f1fc8cdb..5ff708ed 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/MarkdownUtils.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/markdown/MarkdownUtils.java @@ -108,11 +108,12 @@ public class MarkdownUtils { * Creates a CustomMarkwonAdapter configured with support for tables. */ @NonNull - public static CustomMarkwonAdapter createCustomTablesAdapter() { + public static CustomMarkwonAdapter createCustomTablesAdapter(ImageAndGifEntry imageAndGifEntry) { return CustomMarkwonAdapter.builder(R.layout.adapter_default_entry, R.id.text) .include(TableBlock.class, TableEntry.create(builder -> builder .tableLayout(R.layout.adapter_table_block, R.id.table_layout) .textLayoutIsRoot(R.layout.view_table_entry_cell))) + .include(ImageAndGifBlock.class, imageAndGifEntry) .build(); } } 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 08fd7023..81e95c0c 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/post/ParsePost.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/post/ParsePost.java @@ -22,6 +22,7 @@ import java.util.concurrent.Executor; import java.util.regex.Matcher; import java.util.regex.Pattern; +import ml.docilealligator.infinityforreddit.MediaMetadata; import ml.docilealligator.infinityforreddit.postfilter.PostFilter; import ml.docilealligator.infinityforreddit.utils.JSONUtils; import ml.docilealligator.infinityforreddit.utils.Utils; @@ -232,7 +233,7 @@ public class ParsePost { } } - Map<String, Post.MediaMetadata> mediaMetadataMap = parseMediaMetadata(data); + Map<String, MediaMetadata> mediaMetadataMap = parseMediaMetadata(data); if (data.has(JSONUtils.CROSSPOST_PARENT_LIST)) { //Cross post //data.getJSONArray(JSONUtils.CROSSPOST_PARENT_LIST).getJSONObject(0) out of bounds???????????? @@ -257,10 +258,10 @@ public class ParsePost { } @Nullable - private static Map<String, Post.MediaMetadata> parseMediaMetadata(JSONObject data) { + private static Map<String, MediaMetadata> parseMediaMetadata(JSONObject data) { try { if (data.has(JSONUtils.MEDIA_METADATA_KEY)) { - Map<String, Post.MediaMetadata> mediaMetadataMap = new HashMap<>(); + Map<String, MediaMetadata> mediaMetadataMap = new HashMap<>(); JSONObject mediaMetadataJSON = data.getJSONObject(JSONUtils.MEDIA_METADATA_KEY); for (Iterator<String> it = mediaMetadataJSON.keys(); it.hasNext();) { try { @@ -274,14 +275,14 @@ public class ParsePost { } else { downscaledItemJSON = downscales.getJSONObject(3); } - Post.MediaMetadata.MediaItem downscaledItem = new Post.MediaMetadata.MediaItem(downscaledItemJSON.getInt(JSONUtils.X_KEY), + MediaMetadata.MediaItem downscaledItem = new MediaMetadata.MediaItem(downscaledItemJSON.getInt(JSONUtils.X_KEY), downscaledItemJSON.getInt(JSONUtils.Y_KEY), downscaledItemJSON.getString(JSONUtils.U_KEY)); JSONObject originalItemJSON = media.getJSONObject(JSONUtils.S_KEY); - Post.MediaMetadata.MediaItem originalItem = new Post.MediaMetadata.MediaItem(originalItemJSON.getInt(JSONUtils.X_KEY), + MediaMetadata.MediaItem originalItem = new MediaMetadata.MediaItem(originalItemJSON.getInt(JSONUtils.X_KEY), originalItemJSON.getInt(JSONUtils.Y_KEY), originalItemJSON.getString(JSONUtils.U_KEY)); String id = media.getString(JSONUtils.ID_KEY); - mediaMetadataMap.put(id, new Post.MediaMetadata(id, media.getString(JSONUtils.E_KEY), + mediaMetadataMap.put(id, new MediaMetadata(id, media.getString(JSONUtils.E_KEY), originalItem, downscaledItem)); } catch (JSONException e) { e.printStackTrace(); @@ -299,7 +300,7 @@ public class ParsePost { private static Post parseData(JSONObject data, String permalink, String id, String fullName, String subredditName, String subredditNamePrefixed, String author, String authorFlair, String authorFlairHTML, long postTimeMillis, String title, - ArrayList<Post.Preview> previews, Map<String, Post.MediaMetadata> mediaMetadataMap, + ArrayList<Post.Preview> previews, Map<String, MediaMetadata> mediaMetadataMap, int score, int voteType, int nComments, int upvoteRatio, String flair, String awards, int nAwards, boolean hidden, boolean spoiler, boolean nsfw, boolean stickied, boolean archived, boolean locked, boolean saved, @@ -366,7 +367,7 @@ public class ParsePost { if (data.isNull(JSONUtils.SELFTEXT_KEY)) { post.setSelfText(""); } else { - post.setSelfText(Utils.modifyMarkdown(Utils.parseInlineRedditImages(Utils.trimTrailingWhitespace(data.getString(JSONUtils.SELFTEXT_KEY))))); + post.setSelfText(Utils.parseInlineRedditImages(Utils.modifyMarkdown(Utils.trimTrailingWhitespace(data.getString(JSONUtils.SELFTEXT_KEY))))); } String authority = uri.getAuthority(); @@ -552,7 +553,7 @@ public class ParsePost { if (data.isNull(JSONUtils.SELFTEXT_KEY)) { post.setSelfText(""); } else { - post.setSelfText(Utils.modifyMarkdown(Utils.parseInlineRedditImages(Utils.trimTrailingWhitespace(data.getString(JSONUtils.SELFTEXT_KEY))))); + post.setSelfText(Utils.parseInlineRedditImages(Utils.modifyMarkdown(Utils.trimTrailingWhitespace(data.getString(JSONUtils.SELFTEXT_KEY))))); } post.setPreviews(previews); @@ -627,7 +628,7 @@ public class ParsePost { if (data.isNull(JSONUtils.SELFTEXT_KEY)) { post.setSelfText(""); } else { - post.setSelfText(Utils.modifyMarkdown(Utils.parseInlineRedditImages(Utils.trimTrailingWhitespace(data.getString(JSONUtils.SELFTEXT_KEY))))); + post.setSelfText(Utils.parseInlineRedditImages(Utils.modifyMarkdown(Utils.trimTrailingWhitespace(data.getString(JSONUtils.SELFTEXT_KEY))))); } String authority = uri.getAuthority(); @@ -771,7 +772,7 @@ public class ParsePost { if (data.isNull(JSONUtils.SELFTEXT_KEY)) { post.setSelfText(""); } else { - String selfText = Utils.modifyMarkdown(Utils.parseInlineRedditImages(Utils.trimTrailingWhitespace(data.getString(JSONUtils.SELFTEXT_KEY)))); + String selfText = Utils.parseInlineRedditImages(Utils.modifyMarkdown(Utils.trimTrailingWhitespace(data.getString(JSONUtils.SELFTEXT_KEY)))); post.setSelfText(selfText); if (data.isNull(JSONUtils.SELFTEXT_HTML_KEY)) { post.setSelfTextPlainTrimmed(""); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/post/Post.java b/app/src/main/java/ml/docilealligator/infinityforreddit/post/Post.java index 379d63b6..930f7225 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/post/Post.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/post/Post.java @@ -1,6 +1,5 @@ package ml.docilealligator.infinityforreddit.post; -import android.net.Uri; import android.os.Parcel; import android.os.Parcelable; @@ -10,6 +9,7 @@ import androidx.annotation.Nullable; import java.util.ArrayList; import java.util.Map; +import ml.docilealligator.infinityforreddit.MediaMetadata; import ml.docilealligator.infinityforreddit.utils.APIUtils; /** @@ -767,98 +767,4 @@ public class Post implements Parcelable { parcel.writeString(previewCaptionUrl); } } - - public static class MediaMetadata implements Parcelable { - public String id; - //E.g. Image - public String e; - public String fileName; - public MediaItem original; - public MediaItem downscaled; - - public MediaMetadata(String id, String e, MediaItem original, MediaItem downscaled) { - this.id = id; - this.e = e; - String path = Uri.parse(original.url).getPath(); - this.fileName = path == null ? "Image.jpg" : path.substring(1); - this.original = original; - this.downscaled = downscaled; - } - - protected MediaMetadata(Parcel in) { - id = in.readString(); - e = in.readString(); - fileName = in.readString(); - original = in.readParcelable(MediaItem.class.getClassLoader()); - downscaled = in.readParcelable(MediaItem.class.getClassLoader()); - } - - public static final Creator<MediaMetadata> CREATOR = new Creator<MediaMetadata>() { - @Override - public MediaMetadata createFromParcel(Parcel in) { - return new MediaMetadata(in); - } - - @Override - public MediaMetadata[] newArray(int size) { - return new MediaMetadata[size]; - } - }; - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(@NonNull Parcel dest, int flags) { - dest.writeString(id); - dest.writeString(e); - dest.writeString(fileName); - dest.writeParcelable(original, flags); - dest.writeParcelable(downscaled, flags); - } - - public static class MediaItem implements Parcelable { - public int x; - public int y; - public String url; - - public MediaItem(int x, int y, String url) { - this.x = x; - this.y = y; - this.url = url; - } - - protected MediaItem(Parcel in) { - x = in.readInt(); - y = in.readInt(); - url = in.readString(); - } - - public static final Creator<MediaItem> CREATOR = new Creator<MediaItem>() { - @Override - public MediaItem createFromParcel(Parcel in) { - return new MediaItem(in); - } - - @Override - public MediaItem[] newArray(int size) { - return new MediaItem[size]; - } - }; - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(@NonNull Parcel dest, int flags) { - dest.writeInt(x); - dest.writeInt(y); - dest.writeString(url); - } - } - } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/utils/Utils.java b/app/src/main/java/ml/docilealligator/infinityforreddit/utils/Utils.java index f5f3b163..0efed43b 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/utils/Utils.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/utils/Utils.java @@ -38,7 +38,6 @@ import com.google.android.material.snackbar.Snackbar; import com.google.android.material.tabs.TabLayout; import com.google.android.material.textfield.TextInputLayout; -import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.xmlpull.v1.XmlPullParserException; @@ -88,7 +87,7 @@ public final class Utils { } public static String parseInlineGifInComments(String markdown) { - StringBuilder markdownStringBuilder = new StringBuilder(markdown); + /*StringBuilder markdownStringBuilder = new StringBuilder(markdown); Pattern inlineGifPattern = REGEX_PATTERNS[3]; Matcher matcher = inlineGifPattern.matcher(markdownStringBuilder); while (matcher.find()) { @@ -107,17 +106,18 @@ public final class Utils { Matcher matcher3 = inlineGifPattern3.matcher(markdownStringBuilder); while (matcher3.find()) { markdownStringBuilder.replace(matcher3.start(), matcher3.end(), - "![gif](https://reddit-meta-production.s3.amazonaws.com/public/fortnitebr/emotes/snoomoji_emotes/" + "![emote](https://reddit-meta-production.s3.amazonaws.com/public/fortnitebr/emotes/snoomoji_emotes/" + markdownStringBuilder.substring( - matcher3.start() + "![gif](emote|".length(), matcher3.end() - 1).replace('|', '/') + ".gif)"); + matcher3.start() + "![emote](emote|".length(), matcher3.end() - 1).replace('|', '/') + ".gif)"); matcher3 = inlineGifPattern3.matcher(markdownStringBuilder); } - return markdownStringBuilder.toString(); + return markdownStringBuilder.toString();*/ + return markdown; } public static String parseInlineEmotes(String markdown, JSONObject mediaMetadataObject) throws JSONException { - JSONArray mediaMetadataNames = mediaMetadataObject.names(); + /*JSONArray mediaMetadataNames = mediaMetadataObject.names(); if (mediaMetadataNames != null) { for (int i = 0; i < mediaMetadataNames.length(); i++) { if (!mediaMetadataNames.isNull(i)) { @@ -146,6 +146,7 @@ public final class Utils { } } } + return markdown;*/ return markdown; } |