From d5a0dcb980b740edc32c4e49b0ef4adacfcdb76d Mon Sep 17 00:00:00 2001 From: Thomas Date: Fri, 18 Dec 2020 16:49:18 +0100 Subject: [PATCH] Fix issue #152 --- .../fedilabtube/client/PeertubeService.java | 63 +++++++++++++++---- .../client/RetrofitPeertubeAPI.java | 35 +++++++---- 2 files changed, 74 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/app/fedilab/fedilabtube/client/PeertubeService.java b/app/src/main/java/app/fedilab/fedilabtube/client/PeertubeService.java index 3561725..a2c8031 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/client/PeertubeService.java +++ b/app/src/main/java/app/fedilab/fedilabtube/client/PeertubeService.java @@ -184,27 +184,56 @@ public interface PeertubeService { //Timelines Authenticated //Subscriber timeline @GET("users/me/subscriptions/videos?sort=-publishedAt") - Call getSubscriptionVideos(@Header("Authorization") String credentials, @Query("start") String maxId, @Query("count") String count, @Query("languageOneOf") List languageOneOf); + Call getSubscriptionVideos( + @Header("Authorization") String credentials, + @Query("start") String maxId, + @Query("count") String coun, + @Query("nsfw") boolean nsfwt, + @Query("languageOneOf") List languageOneOf); //Overview videos @GET("overviews/videos") - Call getOverviewVideos(@Header("Authorization") String credentials, @Query("page") String page, @Query("languageOneOf") List languageOneOf); + Call getOverviewVideos( + @Header("Authorization") String credentials, + @Query("page") String page, + @Query("nsfw") boolean nsfw, + @Query("languageOneOf") List languageOneOf); //Most liked videos @GET("videos?sort=-likes") - Call getMostLikedVideos(@Header("Authorization") String credentials, @Query("start") String maxId, @Query("count") String count, @Query("languageOneOf") List languageOneOf); + Call getMostLikedVideos( + @Header("Authorization") String credentials, + @Query("start") String maxId, + @Query("count") String count, + @Query("nsfw") boolean nsfw, + @Query("languageOneOf") List languageOneOf); //Trending videos @GET("videos?sort=-trending") - Call getTrendingVideos(@Header("Authorization") String credentials, @Query("start") String maxId, @Query("count") String count, @Query("languageOneOf") List languageOneOf); + Call getTrendingVideos( + @Header("Authorization") String credentials, + @Query("start") String maxId, + @Query("count") String count, + @Query("nsfw") boolean nsfw, + @Query("languageOneOf") List languageOneOf); //Recently added videos @GET("videos?sort=-publishedAt") - Call getRecentlyAddedVideos(@Header("Authorization") String credentials, @Query("start") String maxId, @Query("count") String count, @Query("languageOneOf") List languageOneOf); + Call getRecentlyAddedVideos( + @Header("Authorization") String credentials, + @Query("start") String maxId, + @Query("count") String count, + @Query("nsfw") boolean nsfw, + @Query("languageOneOf") List languageOneOf); //Local videos @GET("videos?sort=-publishedAt&filter=local") - Call getLocalVideos(@Header("Authorization") String credentials, @Query("start") String maxId, @Query("count") String count, @Query("languageOneOf") List languageOneOf); + Call getLocalVideos( + @Header("Authorization") String credentials, + @Query("start") String maxId, + @Query("count") String count, + @Query("nsfw") boolean nsfw, + @Query("languageOneOf") List languageOneOf); //History @GET("users/me/history/videos") @@ -212,6 +241,7 @@ public interface PeertubeService { @Header("Authorization") String credentials, @Query("start") String maxId, @Query("count") String count, + @Query("nsfw") boolean nsfw, @Query("startDate") String startDate, @Query("endDate") String endDate ); @@ -226,7 +256,8 @@ public interface PeertubeService { @Header("Authorization") String credentials, @Query("search") String search, @Query("start") String maxId, - @Query("count") String count); + @Query("count") String count, + @Query("nsfw") boolean nsfw); //Search channels @GET("search/video-channels") @@ -243,7 +274,8 @@ public interface PeertubeService { @Header("Authorization") String credentials, @Query("tagsOneOf") List tagsOneOf, @Query("start") String maxId, - @Query("count") String count); + @Query("count") String count, + @Query("nsfw") boolean nsfw); //Get notifications @GET("users/me/notifications") @@ -269,9 +301,14 @@ public interface PeertubeService { @GET("users/me/videos?sort=-publishedAt") Call getMyVideos(@Header("Authorization") String credentials, @Query("start") String maxId, @Query("count") String count); - //Get my video + //Get user videos @GET("accounts/{name}/videos?sort=-publishedAt") - Call getVideosForAccount(@Path("name") String name, @Query("start") String maxId, @Query("count") String count); + Call getVideosForAccount( + @Path("name") String name, + @Query("start") String maxId, + @Query("count") String count, + @Query("nsfw") boolean nsfw + ); @Multipart @PUT("videos/{id}") @@ -318,7 +355,11 @@ public interface PeertubeService { Call getAllChannels(); @GET("video-channels/{channelHandle}/videos") - Call getChannelVideos(@Path("channelHandle") String channelHandle, @Query("start") String maxId, @Query("count") String count); + Call getChannelVideos( + @Path("channelHandle") String channelHandle, + @Query("start") String maxId, + @Query("count") String count, + @Query("nsfw") boolean nsfw); @POST("video-channels") Call addChannel(@Header("Authorization") String credentials, @Body ChannelParams channelParams); diff --git a/app/src/main/java/app/fedilab/fedilabtube/client/RetrofitPeertubeAPI.java b/app/src/main/java/app/fedilab/fedilabtube/client/RetrofitPeertubeAPI.java index ddd7469..3946ef6 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/client/RetrofitPeertubeAPI.java +++ b/app/src/main/java/app/fedilab/fedilabtube/client/RetrofitPeertubeAPI.java @@ -100,6 +100,7 @@ public class RetrofitPeertubeAPI { private final String count; private String token; private Set selection; + private boolean showNSFWVideos = true; public RetrofitPeertubeAPI(Context context) { _context = context; @@ -107,6 +108,10 @@ public class RetrofitPeertubeAPI { finalUrl = "https://" + HelperInstance.getLiveInstance(context) + "/api/v1/"; SharedPreferences sharedpreferences = _context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); count = String.valueOf(sharedpreferences.getInt(Helper.SET_VIDEOS_PER_PAGE, Helper.VIDEOS_PER_PAGE)); + String currentSensitive = sharedpreferences.getString(_context.getString(R.string.set_video_sensitive_choice), Helper.BLUR); + if (currentSensitive.compareTo(Helper.DO_NOT_LIST) == 0) { + showNSFWVideos = false; + } } public RetrofitPeertubeAPI(Context context, String instance, String token) { @@ -116,6 +121,10 @@ public class RetrofitPeertubeAPI { finalUrl = "https://" + instance + "/api/v1/"; SharedPreferences sharedpreferences = _context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); count = String.valueOf(sharedpreferences.getInt(Helper.SET_VIDEOS_PER_PAGE, Helper.VIDEOS_PER_PAGE)); + String currentSensitive = sharedpreferences.getString(_context.getString(R.string.set_video_sensitive_choice), Helper.BLUR); + if (currentSensitive.compareTo(Helper.DO_NOT_LIST) == 0) { + showNSFWVideos = false; + } } @@ -336,7 +345,7 @@ public class RetrofitPeertubeAPI { public APIResponse getVideosForChannel(String channelId, String max_id) { APIResponse apiResponse = new APIResponse(); PeertubeService peertubeService = init(); - Call videoCall = peertubeService.getChannelVideos(channelId, max_id, count); + Call videoCall = peertubeService.getChannelVideos(channelId, max_id, count, showNSFWVideos); if (videoCall != null) { try { Response response = videoCall.execute(); @@ -381,7 +390,7 @@ public class RetrofitPeertubeAPI { public APIResponse getHistory(String max_id, String startDate, String endDate) { APIResponse apiResponse = new APIResponse(); PeertubeService peertubeService = init(); - Call videoCall = peertubeService.getHistory(getToken(), max_id, count, startDate, endDate); + Call videoCall = peertubeService.getHistory(getToken(), max_id, count, showNSFWVideos, startDate, endDate); if (videoCall != null) { try { Response response = videoCall.execute(); @@ -410,29 +419,29 @@ public class RetrofitPeertubeAPI { videoCall = peertubeService.getMyVideos(getToken(), max_id, count); break; case ACCOUNT_VIDEOS: - videoCall = peertubeService.getVideosForAccount(forAccount, max_id, count); + videoCall = peertubeService.getVideosForAccount(forAccount, max_id, count, showNSFWVideos); break; case SUBSCRIBTIONS: if (forAccount == null) { - videoCall = peertubeService.getSubscriptionVideos(getToken(), max_id, count, filter); + videoCall = peertubeService.getSubscriptionVideos(getToken(), max_id, count, showNSFWVideos, filter); } else { - videoCall = peertubeService.getChannelVideos(forAccount, max_id, count); + videoCall = peertubeService.getChannelVideos(forAccount, max_id, count, showNSFWVideos); } break; case MOST_LIKED: - videoCall = peertubeService.getMostLikedVideos(getToken(), max_id, count, filter); + videoCall = peertubeService.getMostLikedVideos(getToken(), max_id, count, showNSFWVideos, filter); break; case LOCAL: - videoCall = peertubeService.getLocalVideos(getToken(), max_id, count, filter); + videoCall = peertubeService.getLocalVideos(getToken(), max_id, count, showNSFWVideos, filter); break; case TRENDING: - videoCall = peertubeService.getTrendingVideos(getToken(), max_id, count, filter); + videoCall = peertubeService.getTrendingVideos(getToken(), max_id, count, showNSFWVideos, filter); break; case HISTORY: - videoCall = peertubeService.getHistory(getToken(), max_id, count, null, null); + videoCall = peertubeService.getHistory(getToken(), max_id, count, showNSFWVideos, null, null); break; case RECENT: - videoCall = peertubeService.getRecentlyAddedVideos(getToken(), max_id, count, filter); + videoCall = peertubeService.getRecentlyAddedVideos(getToken(), max_id, count, showNSFWVideos, filter); break; } if (videoCall != null) { @@ -463,7 +472,7 @@ public class RetrofitPeertubeAPI { APIResponse apiResponse = new APIResponse(); PeertubeService peertubeService = init(); ArrayList filter = selection != null ? new ArrayList<>(selection) : null; - Call overviewVideoCall = peertubeService.getOverviewVideos(getToken(), page, filter); + Call overviewVideoCall = peertubeService.getOverviewVideos(getToken(), page, showNSFWVideos, filter); try { Response response = overviewVideoCall.execute(); if (response.isSuccessful() && response.body() != null) { @@ -903,7 +912,7 @@ public class RetrofitPeertubeAPI { */ public APIResponse searchNextVideos(List tags) { PeertubeService peertubeService = init(); - Call searchVideosCall = peertubeService.searchNextVideo(getToken(), tags, "0", "20"); + Call searchVideosCall = peertubeService.searchNextVideo(getToken(), tags, "0", "20", showNSFWVideos); APIResponse apiResponse = new APIResponse(); try { Response response = searchVideosCall.execute(); @@ -929,7 +938,7 @@ public class RetrofitPeertubeAPI { */ public APIResponse searchPeertube(String query, String max_id) { PeertubeService peertubeService = init(); - Call searchVideosCall = peertubeService.searchVideos(getToken(), query, max_id, count); + Call searchVideosCall = peertubeService.searchVideos(getToken(), query, max_id, count, showNSFWVideos); APIResponse apiResponse = new APIResponse(); try { Response response = searchVideosCall.execute();