summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas <tschneider.ac@gmail.com>2023-03-09 13:59:55 +0100
committerThomas <tschneider.ac@gmail.com>2023-03-09 13:59:55 +0100
commitca3142046b0320b8057e7a1ffd6f7befbc8ace6a (patch)
tree8418991f894710ccc79dbcaf530c63c053d1f5ce
parent7e2c9ab4a20d6669dd0b80adbfce2ebe1048d5fd (diff)
Button to load media from remote instance when it fails
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/media/FragmentMedia.java24
-rw-r--r--app/src/main/res/layouts/mastodon/layout/fragment_slide_media.xml12
-rw-r--r--app/src/main/res/values/strings.xml3
3 files changed, 39 insertions, 0 deletions
diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/media/FragmentMedia.java b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/media/FragmentMedia.java
index ef0b8470b..14461db42 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/media/FragmentMedia.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/media/FragmentMedia.java
@@ -39,6 +39,7 @@ import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition;
import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.MediaItem;
+import com.google.android.exoplayer2.PlaybackException;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.source.ProgressiveMediaSource;
import com.google.android.exoplayer2.upstream.DataSource;
@@ -56,6 +57,7 @@ import app.fedilab.android.mastodon.client.entities.api.Attachment;
import app.fedilab.android.mastodon.helper.CacheDataSourceFactory;
import app.fedilab.android.mastodon.helper.Helper;
import app.fedilab.android.mastodon.viewmodel.mastodon.TimelinesVM;
+import es.dmoral.toasty.Toasty;
public class FragmentMedia extends Fragment {
@@ -184,6 +186,14 @@ public class FragmentMedia extends Fragment {
@Override
public void onLoadFailed(@Nullable Drawable errorDrawable) {
scheduleStartPostponedTransition(binding.mediaPicture);
+ Toasty.error(requireActivity(), getString(R.string.toast_error_media), Toasty.LENGTH_SHORT).show();
+ binding.loadRemote.setVisibility(View.VISIBLE);
+ binding.loadRemote.setOnClickListener(v -> {
+ binding.loadRemote.setVisibility(View.GONE);
+ binding.loader.setVisibility(View.GONE);
+ Glide.with(requireActivity())
+ .load(attachment.remote_url).into(binding.mediaPicture);
+ });
}
@Override
@@ -245,6 +255,20 @@ public class FragmentMedia extends Fragment {
player.setMediaSource(videoSource);
player.prepare();
player.setPlayWhenReady(true);
+ player.addListener(new Player.Listener() {
+ @Override
+ public void onPlayerError(@NonNull PlaybackException error) {
+ Player.Listener.super.onPlayerError(error);
+ Toasty.error(requireActivity(), getString(R.string.toast_error_media), Toasty.LENGTH_SHORT).show();
+ binding.loadRemote.setVisibility(View.VISIBLE);
+ binding.loadRemote.setOnClickListener(v -> {
+ binding.loadRemote.setVisibility(View.GONE);
+ binding.loader.setVisibility(View.GONE);
+ loadVideo(attachment.remote_url, type);
+ });
+ }
+
+ });
}
@Override
diff --git a/app/src/main/res/layouts/mastodon/layout/fragment_slide_media.xml b/app/src/main/res/layouts/mastodon/layout/fragment_slide_media.xml
index b5361e12c..2137b9f39 100644
--- a/app/src/main/res/layouts/mastodon/layout/fragment_slide_media.xml
+++ b/app/src/main/res/layouts/mastodon/layout/fragment_slide_media.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -65,5 +66,16 @@
android:layout_centerInParent="true"
android:visibility="gone" />
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/load_remote"
+ style="@style/Widget.Material3.Button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_centerHorizontal="true"
+ android:text="@string/load_media_remotely"
+ android:visibility="gone"
+ tools:visibility="visible" />
+
</RelativeLayout>
</FrameLayout>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 0aacf0e9e..ba9663138 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1947,4 +1947,7 @@
<string name="updated_count">%d updated messages</string>
<string name="frequency_count_minutes">%d frequency (minutes)</string>
<string name="follows_you">Follows you</string>
+
+ <string name="load_media_remotely">Load media remotely</string>
+ <string name="toast_error_media">Media cannot be loaded!</string>
</resources> \ No newline at end of file