Load full description

This commit is contained in:
Stefan Schüller 2021-11-20 20:40:28 +00:00
parent 37d0157d3c
commit a399b12aed
5 changed files with 66 additions and 4 deletions

View File

@ -21,7 +21,7 @@ PeerTube is a federated video streaming platform that is community-owned and ad-
This client comes preconfigured with one PeerTube server managed by the application creator - not the PeerTube project itself, which lists more on http://instances.joinpeertube.org/ - to allow you to have a taste of what the client is capable of. Choose your server to tune your experience! This client comes preconfigured with one PeerTube server managed by the application creator - not the PeerTube project itself, which lists more on http://instances.joinpeertube.org/ - to allow you to have a taste of what the client is capable of. Choose your server to tune your experience!
Please note this is app is in beta and is still missing a lot of features. Please note this app is in beta and is still missing a lot of features.
## Download ## Download

View File

@ -36,6 +36,7 @@ import android.widget.Toast;
import com.mikepenz.iconics.Iconics; import com.mikepenz.iconics.Iconics;
import com.squareup.picasso.Picasso; import com.squareup.picasso.Picasso;
import java.util.Objects;
import net.schueller.peertube.R; import net.schueller.peertube.R;
import net.schueller.peertube.helper.APIUrlHelper; import net.schueller.peertube.helper.APIUrlHelper;
import net.schueller.peertube.helper.ErrorHelper; import net.schueller.peertube.helper.ErrorHelper;
@ -43,6 +44,7 @@ import net.schueller.peertube.helper.MetaDataHelper;
import net.schueller.peertube.intents.Intents; import net.schueller.peertube.intents.Intents;
import net.schueller.peertube.model.Account; import net.schueller.peertube.model.Account;
import net.schueller.peertube.model.Avatar; import net.schueller.peertube.model.Avatar;
import net.schueller.peertube.model.Description;
import net.schueller.peertube.model.Rating; import net.schueller.peertube.model.Rating;
import net.schueller.peertube.model.Video; import net.schueller.peertube.model.Video;
import net.schueller.peertube.network.GetVideoDataService; import net.schueller.peertube.network.GetVideoDataService;
@ -210,7 +212,29 @@ public class VideoMetaDataFragment extends Fragment {
// description // description
TextView videoDescription = activity.findViewById(R.id.description); TextView videoDescription = activity.findViewById(R.id.description);
videoDescription.setText(video.getDescription()); String shortDescription = video.getDescription();
if (shortDescription != null && Objects.requireNonNull(shortDescription).length() > 237) {
shortDescription += "\n" + getString(R.string.video_description_read_more);
videoDescription.setOnClickListener(v -> {
Call<Description> call = videoDataService.getVideoFullDescription(video.getUuid());
call.enqueue(new Callback<Description>() {
@Override
public void onResponse(Call<Description> call, Response<Description> response) {
if (response.isSuccessful() && response.body() != null) {
new Description();
Description videoFullDescription;
videoFullDescription = response.body();
videoDescription.setText(videoFullDescription.getDescription());
}
}
@Override
public void onFailure(Call<Description> call, Throwable t) {
Toast.makeText(getContext(), getString(R.string.video_get_full_description_failed), Toast.LENGTH_SHORT).show();
}
});
});
}
videoDescription.setText(shortDescription);
// video privacy // video privacy
TextView videoPrivacy = activity.findViewById(R.id.video_privacy); TextView videoPrivacy = activity.findViewById(R.id.video_privacy);

View File

@ -0,0 +1,30 @@
/*
* Copyright (C) 2020 Stefan Schüller <sschueller@techdroid.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package net.schueller.peertube.model;
public class Description {
private String description;
public String getDescription() {
return description;
}
public void setDescription(final String description) {
this.description = description;
}
}

View File

@ -16,6 +16,7 @@
*/ */
package net.schueller.peertube.network; package net.schueller.peertube.network;
import net.schueller.peertube.model.Description;
import net.schueller.peertube.model.Rating; import net.schueller.peertube.model.Rating;
import net.schueller.peertube.model.Video; import net.schueller.peertube.model.Video;
import net.schueller.peertube.model.VideoList; import net.schueller.peertube.model.VideoList;
@ -43,9 +44,9 @@ public interface GetVideoDataService {
@Query("languageOneOf") Set<String> languages @Query("languageOneOf") Set<String> languages
); );
@GET("videos/{id}") @GET("videos/{uuid}")
Call<Video> getVideoData( Call<Video> getVideoData(
@Path(value = "id", encoded = true) String id @Path(value = "uuid", encoded = true) String id
); );
@GET("search/videos/") @GET("search/videos/")
@ -64,6 +65,11 @@ public interface GetVideoDataService {
@Path(value = "id", encoded = true) Integer id @Path(value = "id", encoded = true) Integer id
); );
@GET("videos/{uuid}/description")
Call<Description> getVideoFullDescription(
@Path(value = "uuid", encoded = true) String id
);
@PUT("videos/{id}/rate") @PUT("videos/{id}/rate")
Call<ResponseBody> rateVideo( Call<ResponseBody> rateVideo(
@Path(value = "id", encoded = true) Integer id, @Path(value = "id", encoded = true) Integer id,

View File

@ -364,4 +364,6 @@
<string name="pref_insecure_confirm_yes">Yes</string> <string name="pref_insecure_confirm_yes">Yes</string>
<string name="pref_insecure_confirm_message">You are about the disable all SSL Certification validation in Thorium. Disabling this can be very dangerous if the peertube server is not under your control, because a man-in-the-middle attack could direct traffic to another server without your knowledge. An attacker could record passwords and other personal data.</string> <string name="pref_insecure_confirm_message">You are about the disable all SSL Certification validation in Thorium. Disabling this can be very dangerous if the peertube server is not under your control, because a man-in-the-middle attack could direct traffic to another server without your knowledge. An attacker could record passwords and other personal data.</string>
<string name="video_list_live_marker">LIVE</string> <string name="video_list_live_marker">LIVE</string>
<string name="video_get_full_description_failed">Getting full video description failed</string>
<string name="video_description_read_more">Read More</string>
</resources> </resources>