瀏覽代碼

MediaItem uri fix

Milan Jurkulak 3 年之前
父節點
當前提交
e2ff004f55

+ 7 - 4
app/src/main/kotlin/org/mjdev/tvapp/ui/screens/IPTVScreen.kt

@@ -29,6 +29,7 @@ import org.mjdev.tvlib.screen.Screen
 import org.mjdev.tvlib.ui.components.media.MediaPlayerContainer
 import org.mjdev.tvlib.extensions.MediaItemExt.uri
 import org.mjdev.tvlib.extensions.ListExt.indexOf
+import org.mjdev.tvlib.extensions.MediaItemExt.mediaItem
 import org.mjdev.tvlib.ui.components.media.MediaPlayerState.Companion.rememberMediaPlayerState
 
 @androidx.annotation.OptIn(androidx.media3.common.util.UnstableApi::class)
@@ -56,17 +57,19 @@ class IPTVScreen : Screen() {
             IPTVViewModel.mock(context)
         }
 
-        val data: Any? by lazy {
-            args[data]
-        }
+        val data: MediaItem = args[data].mediaItem
 
         val dataList: List<MediaItem> = remember(data) {
             viewModel.mediaItemsFor(data)
         }
 
+        val startIndex = dataList.indexOf { item ->
+            item.uri.contentEquals(data.uri)
+        }
+
         val state = rememberMediaPlayerState(
             items = dataList,
-            itemToPlay = dataList.indexOf<Any?> { item -> item.uri == data.uri },
+            itemToPlay = startIndex
         )
 
         MediaPlayerContainer(

+ 4 - 1
tvlib/src/main/kotlin/org/mjdev/tvlib/extensions/MediaItemExt.kt

@@ -40,8 +40,11 @@ object MediaItemExt {
 
     val Any?.uri: String
         get() = when (this) {
-            is MediaItem -> this.localConfiguration.uri
+            is MediaItem -> this.localConfiguration?.uri.toString()
             is ItemWithUri<*> -> (this as? ItemWithUri<*>)?.uri.toString()
+            is ItemAudio -> this.uri.toString()
+            is ItemVideo -> this.uri.toString()
+            is ItemPhoto -> this.uri.toString()
             else -> this.toString()
         }
 

+ 1 - 1
tvlib/src/main/kotlin/org/mjdev/tvlib/ui/components/media/MediaPlayerState.kt

@@ -40,7 +40,7 @@ class MediaPlayerState(
     var mediaItems: List<MediaItem> = initItems
 
     @Json(name = "currentItemIndex")
-    var currentItemIndex = initItemIndex
+    var currentItemIndex = if (initItemIndex < 0) 0 else initItemIndex
 
     @Json(name = "currentPosition")
     var currentPosition = startSeek ?: 0L