From 49fef974c257ab2ad8519ca9b92a55a3234642b2 Mon Sep 17 00:00:00 2001 From: Docile-Alligator <25734209+Docile-Alligator@users.noreply.github.com> Date: Thu, 4 Sep 2025 16:55:02 -0400 Subject: [PATCH] Fix anonymous home and multireddit posts not working. --- .../infinityforreddit/NetworkModule.java | 18 ++++++++++++------ .../activities/ViewPostDetailActivity.java | 2 +- .../infinityforreddit/apis/RedditAPI.java | 8 ++++++++ .../post/PostPagingSource.java | 7 ++++--- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/NetworkModule.java b/app/src/main/java/ml/docilealligator/infinityforreddit/NetworkModule.java index 3d80f6dd..5a53e8ac 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/NetworkModule.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/NetworkModule.java @@ -44,12 +44,18 @@ abstract class NetworkModule { .connectTimeout(30, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS) .writeTimeout(30, TimeUnit.SECONDS) - .addInterceptor(chain -> chain.proceed( - chain.request() - .newBuilder() - .header("User-Agent", APIUtils.USER_AGENT) - .build() - )); + .addInterceptor(chain -> { + if (chain.request().header("User-Agent") == null) { + return chain.proceed( + chain.request() + .newBuilder() + .header("User-Agent", APIUtils.USER_AGENT) + .build() + ); + } else { + return chain.proceed(chain.request()); + } + }); if (proxyEnabled) { Proxy.Type proxyType = Proxy.Type.valueOf(mProxySharedPreferences.getString(SharedPreferencesUtils.PROXY_TYPE, "HTTP")); 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 da18afae..7c2bcacd 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java @@ -630,7 +630,7 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele break; case PostPagingSource.TYPE_ANONYMOUS_FRONT_PAGE: case PostPagingSource.TYPE_ANONYMOUS_MULTIREDDIT: - call = api.getSubredditBestPosts(concatenatedSubredditNames, sortType, sortTime, afterKey); + call = api.getAnonymousFrontPageOrMultiredditPosts(concatenatedSubredditNames, sortType, sortTime, afterKey, APIUtils.ANONYMOUS_USER_AGENT); break; default: call = api.getBestPosts(sortType, sortTime, afterKey, diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/apis/RedditAPI.java b/app/src/main/java/ml/docilealligator/infinityforreddit/apis/RedditAPI.java index efa2e4f7..c3aedae2 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/apis/RedditAPI.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/apis/RedditAPI.java @@ -284,6 +284,10 @@ public interface RedditAPI { ListenableFuture> getSubredditBestPostsListenableFuture(@Path("subredditName") String subredditName, @Path("sortType") SortType.Type sortType, @Query("t") SortType.Time sortTime, @Query("after") String lastItem); + @GET("r/{subredditName}/{sortType}.json?raw_json=1&limit=100&always_show_media=1") + ListenableFuture> getAnonymousFrontPageOrMultiredditPostsListenableFuture(@Path("subredditName") String subredditName, @Path("sortType") SortType.Type sortType, + @Query("t") SortType.Time sortTime, @Query("after") String lastItem, @Header("User-Agent") String userAgent); + @GET("user/{username}/{where}.json?type=links&raw_json=1&limit=100") ListenableFuture> getUserPostsOauthListenableFuture(@Header(APIUtils.AUTHORIZATION_KEY) String authorization, @Path("username") String username, @@ -355,6 +359,10 @@ public interface RedditAPI { Call getSubredditBestPosts(@Path("subredditName") String subredditName, @Path("sortType") SortType.Type sortType, @Query("t") SortType.Time sortTime, @Query("after") String lastItem); + @GET("r/{subredditName}/{sortType}.json?raw_json=1&limit=100&always_show_media=1") + Call getAnonymousFrontPageOrMultiredditPosts(@Path("subredditName") String subredditName, @Path("sortType") SortType.Type sortType, + @Query("t") SortType.Time sortTime, @Query("after") String lastItem, @Header("User-Agent") String userAgent); + @GET("user/{username}/{where}.json?&type=links&raw_json=1&limit=100") Call getUserPostsOauth(@Path("username") String username, @Path("where") String where, @Query("after") String lastItem, @Query("sort") SortType.Type sortType, diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/post/PostPagingSource.java b/app/src/main/java/ml/docilealligator/infinityforreddit/post/PostPagingSource.java index 4f155a69..0018b973 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/post/PostPagingSource.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/post/PostPagingSource.java @@ -195,7 +195,7 @@ public class PostPagingSource extends ListenableFuturePagingSource case TYPE_MULTI_REDDIT: return loadMultiRedditPosts(loadParams, api); default: - return loadAnonymousHomePosts(loadParams, api); + return loadAnonymousFrontPageOrMultiredditPosts(loadParams, api); } } @@ -351,8 +351,9 @@ public class PostPagingSource extends ListenableFuturePagingSource IOException.class, LoadResult.Error::new, executor); } - private ListenableFuture> loadAnonymousHomePosts(@NonNull LoadParams loadParams, RedditAPI api) { - ListenableFuture> anonymousHomePosts = api.getSubredditBestPostsListenableFuture(subredditOrUserName, sortType.getType(), sortType.getTime(), loadParams.getKey()); + private ListenableFuture> loadAnonymousFrontPageOrMultiredditPosts(@NonNull LoadParams loadParams, RedditAPI api) { + ListenableFuture> anonymousHomePosts = api.getAnonymousFrontPageOrMultiredditPostsListenableFuture( + subredditOrUserName, sortType.getType(), sortType.getTime(), loadParams.getKey(), APIUtils.ANONYMOUS_USER_AGENT); ListenableFuture> pageFuture = Futures.transform(anonymousHomePosts, this::transformData, executor);