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 ef0b8470..14461db4 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 b5361e12..2137b9f3 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 @@ + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0aacf0e9..ba966313 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1947,4 +1947,7 @@ %d updated messages %d frequency (minutes) Follows you + + Load media remotely + Media cannot be loaded! \ No newline at end of file