Fix anonymous home and multireddit posts not working.

This commit is contained in:
Docile-Alligator
2025-09-04 16:55:02 -04:00
parent 79225f784f
commit 49fef974c2
4 changed files with 25 additions and 10 deletions

View File

@ -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"));

View File

@ -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,

View File

@ -284,6 +284,10 @@ public interface RedditAPI {
ListenableFuture<Response<String>> 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<Response<String>> 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<Response<String>> getUserPostsOauthListenableFuture(@Header(APIUtils.AUTHORIZATION_KEY) String authorization,
@Path("username") String username,
@ -355,6 +359,10 @@ public interface RedditAPI {
Call<String> 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<String> 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<String> getUserPostsOauth(@Path("username") String username, @Path("where") String where,
@Query("after") String lastItem, @Query("sort") SortType.Type sortType,

View File

@ -195,7 +195,7 @@ public class PostPagingSource extends ListenableFuturePagingSource<String, Post>
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<String, Post>
IOException.class, LoadResult.Error::new, executor);
}
private ListenableFuture<LoadResult<String, Post>> loadAnonymousHomePosts(@NonNull LoadParams<String> loadParams, RedditAPI api) {
ListenableFuture<Response<String>> anonymousHomePosts = api.getSubredditBestPostsListenableFuture(subredditOrUserName, sortType.getType(), sortType.getTime(), loadParams.getKey());
private ListenableFuture<LoadResult<String, Post>> loadAnonymousFrontPageOrMultiredditPosts(@NonNull LoadParams<String> loadParams, RedditAPI api) {
ListenableFuture<Response<String>> anonymousHomePosts = api.getAnonymousFrontPageOrMultiredditPostsListenableFuture(
subredditOrUserName, sortType.getType(), sortType.getTime(), loadParams.getKey(), APIUtils.ANONYMOUS_USER_AGENT);
ListenableFuture<LoadResult<String, Post>> pageFuture = Futures.transform(anonymousHomePosts, this::transformData, executor);