Skip to content

Commit f55b8c4

Browse files
committed
fix: video sort order not preserved when starting video from sorted playlist
1 parent 7b0d4ca commit f55b8c4

3 files changed

Lines changed: 25 additions & 16 deletions

File tree

app/src/main/java/com/github/libretube/helpers/ImportHelper.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@ object ImportHelper {
105105
*/
106106
@OptIn(ExperimentalSerializationApi::class)
107107
suspend fun exportSubscriptions(activity: Activity, uri: Uri, importFormat: ImportFormat) {
108-
val token = PreferenceHelper.getToken()
109108
val subs = SubscriptionHelper.getSubscriptions()
110109

111110
when (importFormat) {

app/src/main/java/com/github/libretube/ui/adapters/PlaylistAdapter.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import androidx.core.view.updatePadding
1313
import androidx.recyclerview.widget.RecyclerView
1414
import com.github.libretube.R
1515
import com.github.libretube.api.PlaylistsHelper
16+
import com.github.libretube.api.obj.Playlists
1617
import com.github.libretube.api.obj.StreamItem
1718
import com.github.libretube.constants.IntentData
1819
import com.github.libretube.databinding.VideoRowBinding
@@ -45,7 +46,8 @@ class PlaylistAdapter(
4546
val originalFeed: MutableList<StreamItem>,
4647
private val sortedFeed: MutableList<StreamItem>,
4748
private val playlistId: String,
48-
private val playlistType: PlaylistType
49+
private val playlistType: PlaylistType,
50+
private val onVideoClick: (StreamItem) -> Unit
4951
) : RecyclerView.Adapter<PlaylistViewHolder>() {
5052

5153
private var visibleCount = minOf(20, sortedFeed.size)
@@ -92,7 +94,7 @@ class PlaylistAdapter(
9294
thumbnailDuration.setFormattedDuration(streamItem.duration ?: -1, streamItem.isShort, streamItem.uploaded)
9395

9496
root.setOnClickListener {
95-
NavigationHelper.navigateVideo(root.context, streamItem.url, playlistId)
97+
onVideoClick(streamItem)
9698
}
9799

98100
val activity = (root.context as BaseActivity)

app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import com.github.libretube.extensions.TAG
3232
import com.github.libretube.extensions.ceilHalf
3333
import com.github.libretube.extensions.dpToPx
3434
import com.github.libretube.extensions.setOnDismissListener
35+
import com.github.libretube.extensions.toID
3536
import com.github.libretube.extensions.toastFromMainDispatcher
3637
import com.github.libretube.helpers.ImageHelper
3738
import com.github.libretube.helpers.NavigationHelper
@@ -206,17 +207,7 @@ class PlaylistFragment : DynamicLayoutManagerFragment(R.layout.fragment_playlist
206207
binding.playAll.isGone = true
207208
} else {
208209
binding.playAll.setOnClickListener {
209-
if (playlistFeed.isEmpty()) return@setOnClickListener
210-
211-
val sortedStreams = getSortedVideos()
212-
PlayingQueue.setStreams(sortedStreams)
213-
214-
NavigationHelper.navigateVideo(
215-
requireContext(),
216-
sortedStreams.first().url,
217-
playlistId = playlistId,
218-
keepQueue = true
219-
)
210+
startVideoItemPlayback(getSortedVideos().first())
220211
}
221212
}
222213

@@ -243,7 +234,8 @@ class PlaylistFragment : DynamicLayoutManagerFragment(R.layout.fragment_playlist
243234
binding.bookmark.text = getString(R.string.shuffle)
244235
binding.bookmark.setOnClickListener {
245236
val queue = playlistFeed.shuffled()
246-
PlayingQueue.add(*queue.toTypedArray())
237+
PlayingQueue.setStreams(queue)
238+
247239
NavigationHelper.navigateVideo(
248240
requireContext(),
249241
queue.firstOrNull()?.url,
@@ -276,6 +268,20 @@ class PlaylistFragment : DynamicLayoutManagerFragment(R.layout.fragment_playlist
276268
}
277269
}
278270

271+
private fun startVideoItemPlayback(streamItem: StreamItem) {
272+
if (playlistFeed.isEmpty()) return
273+
274+
val sortedStreams = getSortedVideos()
275+
PlayingQueue.setStreams(sortedStreams)
276+
277+
NavigationHelper.navigateVideo(
278+
requireContext(),
279+
streamItem.url?.toID(),
280+
playlistId = playlistId,
281+
keepQueue = true
282+
)
283+
}
284+
279285
/**
280286
* If the playlist is bookmarked, update its content if modified by the uploader
281287
*/
@@ -324,7 +330,9 @@ class PlaylistFragment : DynamicLayoutManagerFragment(R.layout.fragment_playlist
324330
videos.toMutableList(),
325331
playlistId,
326332
playlistType
327-
)
333+
) { streamItem ->
334+
startVideoItemPlayback(streamItem)
335+
}
328336
// TODO make sure the adapter is set once in onViewCreated
329337
binding.playlistRecView.adapter = playlistAdapter
330338

0 commit comments

Comments
 (0)