diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java index d32b694d7..1fb6b5859 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java @@ -255,7 +255,9 @@ public final class VideoDetailFragment playerUi.ifPresent(MainPlayerUi::toggleFullscreen); } - if (playAfterConnect || (currentInfo != null && isAutoplayEnabled() + if (playAfterConnect + || (currentInfo != null + && isAutoplayEnabled() && playerUi.isEmpty())) { autoPlayEnabled = true; // forcefully start playing openVideoPlayerAutoFullscreen(); @@ -1883,8 +1885,9 @@ public final class VideoDetailFragment @Override public void onFullscreenStateChanged(final boolean fullscreen) { setupBrightness(); - if (!isPlayerAndPlayerServiceAvailable() || player.UIs().get(MainPlayerUi.class).isEmpty() - || getRoot().map(View::getParent).isEmpty()) { + if (!isPlayerAndPlayerServiceAvailable() + || player.UIs().get(MainPlayerUi.class).isEmpty() + || getRoot().flatMap(v -> Optional.ofNullable(v.getParent())).isEmpty()) { return; } diff --git a/app/src/main/java/org/schabi/newpipe/player/Player.java b/app/src/main/java/org/schabi/newpipe/player/Player.java index 1b60f80c9..b6098a1ef 100644 --- a/app/src/main/java/org/schabi/newpipe/player/Player.java +++ b/app/src/main/java/org/schabi/newpipe/player/Player.java @@ -1875,8 +1875,7 @@ public final class Player implements PlaybackListener, Listener { loadController.disablePreloadingOfCurrentTrack(); } - @Nullable - public VideoStream getSelectedVideoStream() { + public Optional getSelectedVideoStream() { return Optional.ofNullable(currentMetadata) .flatMap(MediaItemTag::getMaybeQuality) .filter(quality -> { @@ -1885,8 +1884,7 @@ public final class Player implements PlaybackListener, Listener { && selectedStreamIndex < quality.getSortedVideoStreams().size(); }) .map(quality -> quality.getSortedVideoStreams() - .get(quality.getSelectedVideoStreamIndex())) - .orElse(null); + .get(quality.getSelectedVideoStreamIndex())); } //endregion diff --git a/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java b/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java index f08086287..4f808caac 100644 --- a/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java +++ b/app/src/main/java/org/schabi/newpipe/player/mediaitem/MediaItemTag.java @@ -62,8 +62,8 @@ public interface MediaItemTag { @NonNull static Optional from(@Nullable final MediaItem mediaItem) { return Optional.ofNullable(mediaItem) - .map(item -> item.localConfiguration) - .map(localConfiguration -> localConfiguration.tag) + .flatMap(item -> Optional.ofNullable(item.localConfiguration)) + .flatMap(localConfiguration -> Optional.ofNullable(localConfiguration.tag)) .filter(MediaItemTag.class::isInstance) .map(MediaItemTag.class::cast); } diff --git a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java index 896bb4e70..e4f5b05e1 100644 --- a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java +++ b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java @@ -1060,12 +1060,11 @@ public abstract class VideoPlayerUi extends PlayerUi implements SeekBar.OnSeekBa qualityPopupMenu.getMenu().add(POPUP_MENU_ID_QUALITY, i, Menu.NONE, MediaFormat .getNameById(videoStream.getFormatId()) + " " + videoStream.getResolution()); } - final VideoStream selectedVideoStream = player.getSelectedVideoStream(); - if (selectedVideoStream != null) { - binding.qualityTextView.setText(selectedVideoStream.getResolution()); - } qualityPopupMenu.setOnMenuItemClickListener(this); qualityPopupMenu.setOnDismissListener(this); + + player.getSelectedVideoStream() + .ifPresent(s -> binding.qualityTextView.setText(s.getResolution())); } private void buildPlaybackSpeedMenu() { @@ -1171,12 +1170,9 @@ public abstract class VideoPlayerUi extends PlayerUi implements SeekBar.OnSeekBa qualityPopupMenu.show(); isSomePopupMenuVisible = true; - final VideoStream videoStream = player.getSelectedVideoStream(); - if (videoStream != null) { - //noinspection SetTextI18n - binding.qualityTextView.setText(MediaFormat.getNameById(videoStream.getFormatId()) - + " " + videoStream.getResolution()); - } + player.getSelectedVideoStream() + .map(s -> MediaFormat.getNameById(s.getFormatId()) + " " + s.getResolution()) + .ifPresent(binding.qualityTextView::setText); } /** @@ -1232,10 +1228,9 @@ public abstract class VideoPlayerUi extends PlayerUi implements SeekBar.OnSeekBa Log.d(TAG, "onDismiss() called with: menu = [" + menu + "]"); } isSomePopupMenuVisible = false; //TODO check if this works - final VideoStream selectedVideoStream = player.getSelectedVideoStream(); - if (selectedVideoStream != null) { - binding.qualityTextView.setText(selectedVideoStream.getResolution()); - } + player.getSelectedVideoStream() + .ifPresent(s -> binding.qualityTextView.setText(s.getResolution())); + if (player.isPlaying()) { hideControls(DEFAULT_CONTROLS_DURATION, 0); hideSystemUIIfNeeded();