From 12236a95b4f0f3767e12aa5fdae0538f9cec2ddc Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 18 Mar 2024 04:01:33 +0300 Subject: [PATCH 1/3] fix: playlist cover exists even if there is not load image --- .../java/com/github/libretube/ui/fragments/PlaylistFragment.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt index cbf00a3df..8c035dcd9 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt @@ -136,7 +136,8 @@ class PlaylistFragment : DynamicLayoutManagerFragment() { nextPage = response.nextpage playlistName = response.name isLoading = false - ImageHelper.loadImage(response.thumbnailUrl, binding.thumbnail) + if (!response.thumbnailUrl.isNullOrEmpty()) + ImageHelper.loadImage(response.thumbnailUrl, binding.thumbnail) binding.playlistProgress.isGone = true binding.playlistAppBar.isVisible = true binding.playlistRecView.isVisible = true From e84b8e5ea19803ebda237477818a7e4235bfd46f Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 18 Mar 2024 04:11:19 +0300 Subject: [PATCH 2/3] fix: sortTV is not visible when playlist is empty --- .../java/com/github/libretube/ui/fragments/LibraryFragment.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/java/com/github/libretube/ui/fragments/LibraryFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/LibraryFragment.kt index 80bfe2be8..b94c95df9 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/LibraryFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/LibraryFragment.kt @@ -179,6 +179,7 @@ class LibraryFragment : DynamicLayoutManagerFragment() { if (playlists.isNotEmpty()) { showPlaylists(playlists) } else { + binding.sortTV.isVisible = false binding.nothingHere.isVisible = true } } @@ -198,11 +199,13 @@ class LibraryFragment : DynamicLayoutManagerFragment() { RecyclerView.AdapterDataObserver() { override fun onItemRangeRemoved(positionStart: Int, itemCount: Int) { _binding?.nothingHere?.isVisible = playlistsAdapter.itemCount == 0 + _binding?.sortTV?.isVisible = playlistsAdapter.itemCount > 0 super.onItemRangeRemoved(positionStart, itemCount) } }) binding.nothingHere.isGone = true + binding.sortTV.isVisible = true binding.playlistRecView.adapter = playlistsAdapter } } From 856ff4ba46c243f97c783643c5e4af141e8a3df4 Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 18 Mar 2024 04:42:05 +0300 Subject: [PATCH 3/3] fix: hide buttons and sort menu if playlist empty Co-authored-by: Bnyro <82752168+Bnyro@users.noreply.github.com> --- .../ui/fragments/PlaylistFragment.kt | 79 ++++++++++++------- app/src/main/res/layout/fragment_playlist.xml | 23 ++++++ 2 files changed, 72 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt index 8c035dcd9..713976f1a 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt @@ -136,6 +136,7 @@ class PlaylistFragment : DynamicLayoutManagerFragment() { nextPage = response.nextpage playlistName = response.name isLoading = false + if (!response.thumbnailUrl.isNullOrEmpty()) ImageHelper.loadImage(response.thumbnailUrl, binding.thumbnail) binding.playlistProgress.isGone = true @@ -194,13 +195,21 @@ class PlaylistFragment : DynamicLayoutManagerFragment() { sheet.show(fragmentManager) } - binding.playAll.setOnClickListener { - if (playlistFeed.isEmpty()) return@setOnClickListener - NavigationHelper.navigateVideo( - requireContext(), - response.relatedStreams.first().url, - playlistId - ) + if (playlistFeed.isEmpty()) { + binding.nothingHere.isVisible = true + } + + if (playlistFeed.isEmpty()) { + binding.playAll.isGone = true + } else { + binding.playAll.setOnClickListener { + if (playlistFeed.isEmpty()) return@setOnClickListener + NavigationHelper.navigateVideo( + requireContext(), + response.relatedStreams.first().url, + playlistId + ) + } } if (playlistType == PlaylistType.PUBLIC) { @@ -219,31 +228,41 @@ class PlaylistFragment : DynamicLayoutManagerFragment() { } } else { // private playlist, means shuffle is possible because all videos are received at once - binding.bookmark.setIconResource(R.drawable.ic_shuffle) - binding.bookmark.text = getString(R.string.shuffle) - binding.bookmark.setOnClickListener { - if (playlistFeed.isEmpty()) return@setOnClickListener - val queue = playlistFeed.shuffled() - PlayingQueue.resetToDefaults() - PlayingQueue.add(*queue.toTypedArray()) - NavigationHelper.navigateVideo( - requireContext(), - queue.first().url, - playlistId = playlistId, - keepQueue = true - ) + if (playlistFeed.isEmpty()) { + binding.bookmark.isGone = true + } else { + binding.bookmark.setIconResource(R.drawable.ic_shuffle) + binding.bookmark.text = getString(R.string.shuffle) + binding.bookmark.setOnClickListener { + val queue = playlistFeed.shuffled() + PlayingQueue.resetToDefaults() + PlayingQueue.add(*queue.toTypedArray()) + NavigationHelper.navigateVideo( + requireContext(), + queue.first().url, + playlistId = playlistId, + keepQueue = true + ) + } } - binding.sortContainer.isGone = false + + if (playlistFeed.isEmpty()) { + binding.sortContainer.isGone = true + } else { + binding.sortContainer.isVisible = true + binding.sortContainer.setOnClickListener { + BaseBottomSheet().apply { + setSimpleItems(sortOptions.toList()) { index -> + selectedSortOrder = index + binding.sortTV.text = sortOptions[index] + showPlaylistVideos(response) + } + }.show(childFragmentManager) + } + } + binding.sortTV.text = sortOptions[selectedSortOrder] - binding.sortContainer.setOnClickListener { - BaseBottomSheet().apply { - setSimpleItems(sortOptions.toList()) { index -> - selectedSortOrder = index - binding.sortTV.text = sortOptions[index] - showPlaylistVideos(response) - } - }.show(childFragmentManager) - } + } updatePlaylistBookmark(response) diff --git a/app/src/main/res/layout/fragment_playlist.xml b/app/src/main/res/layout/fragment_playlist.xml index e0aa04c50..97d3596dd 100644 --- a/app/src/main/res/layout/fragment_playlist.xml +++ b/app/src/main/res/layout/fragment_playlist.xml @@ -152,6 +152,29 @@ + + + + + + +