From ab45c1f80c4b690126d01bb9b551c4ef346312db Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 13 Oct 2020 11:04:35 +0200 Subject: [PATCH] Fix some issues + check if video is federated for Sepia search --- app/src/acad/res/values/strings.xml | 1 + app/src/full/res/values/strings.xml | 2 +- .../fedilabtube/InstancePickerActivity.java | 3 +- .../fedilab/fedilabtube/PeertubeActivity.java | 42 ++++++++++++++++--- .../fedilabtube/SepiaSearchActivity.java | 2 - .../fedilabtube/client/data/VideoData.java | 12 ++++++ .../fedilabtube/drawer/PeertubeAdapter.java | 2 + .../PeertubeNotificationsListAdapter.java | 2 + 8 files changed, 56 insertions(+), 10 deletions(-) diff --git a/app/src/acad/res/values/strings.xml b/app/src/acad/res/values/strings.xml index ced6117..2589934 100644 --- a/app/src/acad/res/values/strings.xml +++ b/app/src/acad/res/values/strings.xml @@ -7,6 +7,7 @@ set_video_quality_choice set_video_cache_choice + La vidéo ne peut pas être fédérée ! Locale Locale Découvrir diff --git a/app/src/full/res/values/strings.xml b/app/src/full/res/values/strings.xml index 10d2451..a3cd5f0 100644 --- a/app/src/full/res/values/strings.xml +++ b/app/src/full/res/values/strings.xml @@ -6,7 +6,7 @@ set_video_quality_choice set_video_cache_choice - + The video cannot be federated! Home Local Discover diff --git a/app/src/main/java/app/fedilab/fedilabtube/InstancePickerActivity.java b/app/src/main/java/app/fedilab/fedilabtube/InstancePickerActivity.java index 477c26e..a16cc16 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/InstancePickerActivity.java +++ b/app/src/main/java/app/fedilab/fedilabtube/InstancePickerActivity.java @@ -117,7 +117,6 @@ public class InstancePickerActivity extends AppCompatActivity { pickup_languages.setOnClickListener(v -> { AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(InstancePickerActivity.this); - int i = 0; if (languages.size() > 0) { Iterator> it = languages.entrySet().iterator(); @@ -175,7 +174,7 @@ public class InstancePickerActivity extends AppCompatActivity { }); } - if (peertubeInformation != null && peertubeInformation.getLanguages() != null) { + if (peertubeInformation != null && peertubeInformation.getCategories() != null) { LinkedHashMap categories = new LinkedHashMap<>(peertubeInformation.getCategories()); checkedItemsCategory = new boolean[categories.size()]; itemsLabelCategory = new String[categories.size()]; diff --git a/app/src/main/java/app/fedilab/fedilabtube/PeertubeActivity.java b/app/src/main/java/app/fedilab/fedilabtube/PeertubeActivity.java index 4eb9981..373decd 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/PeertubeActivity.java +++ b/app/src/main/java/app/fedilab/fedilabtube/PeertubeActivity.java @@ -114,6 +114,7 @@ import app.fedilab.fedilabtube.viewmodel.CaptionsVM; import app.fedilab.fedilabtube.viewmodel.CommentVM; import app.fedilab.fedilabtube.viewmodel.PlaylistsVM; import app.fedilab.fedilabtube.viewmodel.PostActionsVM; +import app.fedilab.fedilabtube.viewmodel.SearchVM; import app.fedilab.fedilabtube.viewmodel.TimelineVM; import app.fedilab.fedilabtube.webview.CustomWebview; import app.fedilab.fedilabtube.webview.MastalabWebChromeClient; @@ -226,6 +227,7 @@ public class PeertubeActivity extends AppCompatActivity implements CommentListAd videoUuid = b.getString("video_uuid", null); isMyVideo = b.getBoolean("isMyVideo", false); sepiaSearch = b.getBoolean("sepia_search", false); + peertube = b.getParcelable("video"); } @@ -307,9 +309,23 @@ public class PeertubeActivity extends AppCompatActivity implements CommentListAd } } }); - playVideo(); + if( peertube != null && sepiaSearch && peertube.getEmbedUrl() != null && Helper.isLoggedIn(PeertubeActivity.this)) { + SearchVM viewModelSearch = new ViewModelProvider(PeertubeActivity.this).get(SearchVM.class); + viewModelSearch.getVideos("0", peertube.getEmbedUrl()).observe(PeertubeActivity.this, this::manageVIewVideos); + }else { + playVideo(); + } } + private void manageVIewVideos(APIResponse apiResponse) { + if( apiResponse == null || apiResponse.getPeertubes() == null || apiResponse.getPeertubes().size() == 0) { + playVideo(); + return; + } + peertube = apiResponse.getPeertubes().get(0); + sepiaSearch = false; + playVideo(); + } public void manageVIewComment(APIResponse apiResponse) { flag_loading = false; @@ -521,7 +537,11 @@ public class PeertubeActivity extends AppCompatActivity implements CommentListAd add_comment_write.requestFocus(); add_comment_write.setSelection(add_comment_write.getText().length()); } else { - Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show(); + if( sepiaSearch) { + Toasty.info(PeertubeActivity.this, getString(R.string.federation_issue), Toasty.LENGTH_SHORT).show(); + }else { + Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show(); + } } }); @@ -538,7 +558,11 @@ public class PeertubeActivity extends AppCompatActivity implements CommentListAd add_comment_read.requestFocus(); } } else { - Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show(); + if( sepiaSearch) { + Toasty.info(PeertubeActivity.this, getString(R.string.federation_issue), Toasty.LENGTH_SHORT).show(); + }else { + Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show(); + } } }); @@ -591,7 +615,11 @@ public class PeertubeActivity extends AppCompatActivity implements CommentListAd peertube_like_count.setText(String.valueOf(count)); changeColor(); } else { - Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show(); + if( sepiaSearch) { + Toasty.info(PeertubeActivity.this, getString(R.string.federation_issue), Toasty.LENGTH_SHORT).show(); + }else { + Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show(); + } } }); peertube_dislike_count.setOnClickListener(v -> { @@ -612,7 +640,11 @@ public class PeertubeActivity extends AppCompatActivity implements CommentListAd peertube_dislike_count.setText(String.valueOf(count)); changeColor(); } else { - Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show(); + if( sepiaSearch) { + Toasty.info(PeertubeActivity.this, getString(R.string.federation_issue), Toasty.LENGTH_SHORT).show(); + }else { + Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show(); + } } }); diff --git a/app/src/main/java/app/fedilab/fedilabtube/SepiaSearchActivity.java b/app/src/main/java/app/fedilab/fedilabtube/SepiaSearchActivity.java index b7f2768..5ff0a53 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/SepiaSearchActivity.java +++ b/app/src/main/java/app/fedilab/fedilabtube/SepiaSearchActivity.java @@ -19,7 +19,6 @@ import android.content.SharedPreferences; import android.os.Bundle; import android.view.MenuItem; import android.view.View; -import android.view.WindowManager; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; @@ -315,7 +314,6 @@ public class SepiaSearchActivity extends AppCompatActivity { apply_filter.setOnClickListener(v-> makeSearch()); searchBar.openSearch(); - getWindow().setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); } private void makeSearch(){ diff --git a/app/src/main/java/app/fedilab/fedilabtube/client/data/VideoData.java b/app/src/main/java/app/fedilab/fedilabtube/client/data/VideoData.java index 2f95df8..d40ccd2 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/client/data/VideoData.java +++ b/app/src/main/java/app/fedilab/fedilabtube/client/data/VideoData.java @@ -81,6 +81,8 @@ public class VideoData { private int duration; @SerializedName("embedPath") private String embedPath; + @SerializedName("embedUrl") + private String embedUrl; @SerializedName("files") private List files; @SerializedName("id") @@ -151,6 +153,7 @@ public class VideoData { this.downloadEnabled = in.readByte() != 0; this.duration = in.readInt(); this.embedPath = in.readString(); + this.embedUrl = in.readString(); this.files = new ArrayList<>(); in.readList(this.files, File.class.getClassLoader()); this.id = in.readString(); @@ -349,6 +352,14 @@ public class VideoData { this.embedPath = embedPath; } + public String getEmbedUrl() { + return embedUrl; + } + + public void setEmbedUrl(String embedUrl) { + this.embedUrl = embedUrl; + } + public List getFiles() { return files; } @@ -585,6 +596,7 @@ public class VideoData { dest.writeByte(this.downloadEnabled ? (byte) 1 : (byte) 0); dest.writeInt(this.duration); dest.writeString(this.embedPath); + dest.writeString(this.embedUrl); dest.writeList(this.files); dest.writeString(this.id); dest.writeByte(this.isLocal ? (byte) 1 : (byte) 0); diff --git a/app/src/main/java/app/fedilab/fedilabtube/drawer/PeertubeAdapter.java b/app/src/main/java/app/fedilab/fedilabtube/drawer/PeertubeAdapter.java index da4c4ac..3573093 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/drawer/PeertubeAdapter.java +++ b/app/src/main/java/app/fedilab/fedilabtube/drawer/PeertubeAdapter.java @@ -262,6 +262,7 @@ public class PeertubeAdapter extends RecyclerView.Adapter { Intent intent = new Intent(context, PeertubeActivity.class); Bundle b = new Bundle(); + b.putParcelable("video", notification.getVideo()); b.putString("peertube_instance", finalAccountAction1.getHost()); b.putString("video_id", notification.getComment().getVideo().getId()); b.putString("video_uuid", notification.getComment().getVideo().getUuid()); @@ -142,6 +143,7 @@ public class PeertubeNotificationsListAdapter extends RecyclerView.Adapter { Intent intent = new Intent(context, PeertubeActivity.class); Bundle b = new Bundle(); + b.putParcelable("video", notification.getVideo()); b.putString("peertube_instance", Helper.getLiveInstance(context)); b.putString("video_id", notification.getVideo().getId()); b.putString("video_uuid", notification.getVideo().getUuid());