瀏覽代碼

code improvements

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

+ 12 - 9
app/src/main/kotlin/org/mjdev/tvapp/ui/screens/IPTVScreen.kt

@@ -21,7 +21,9 @@ import androidx.compose.ui.graphics.RectangleShape
 import androidx.compose.ui.graphics.vector.ImageVector
 import androidx.navigation.navArgument
 import org.mjdev.tvapp.R
+import org.mjdev.tvapp.viewmodel.DetailViewModel
 import org.mjdev.tvlib.annotations.TvPreview
+import org.mjdev.tvlib.extensions.HiltExt.appViewModel
 import org.mjdev.tvlib.navigation.AnyType
 import org.mjdev.tvlib.screen.Screen
 import org.mjdev.tvlib.ui.components.media.MediaPlayerContainer
@@ -47,16 +49,17 @@ class IPTVScreen : Screen() {
     @Composable
     override fun ComposeScreen() {
 
-//        val viewModel: DetailViewModel = appViewModel { context ->
-//            DetailViewModel.mockDetailViewModel(context)
-//        }
+        val viewModel: DetailViewModel = appViewModel { context ->
+            DetailViewModel.mockDetailViewModel(context)
+        }
 
         val data: Any? = remember { args[data] }
 
-        // todo anr
-//        val dataList :List<MediaItem> = remember {
-//            viewModel.mediaItemsFor(data)
-//        }
+        val dataList: List<Any?> = remember { viewModel.mediaItemsFor(data) }
+
+        val itemIndex = remember {
+            dataList.indexOf(data)
+        }
 
         Box(
             modifier = Modifier
@@ -65,8 +68,8 @@ class IPTVScreen : Screen() {
         ) {
             MediaPlayerContainer(
                 modifier = Modifier.fillMaxSize(),
-                items = listOf(data.mediaItem),
-                itemToPlay = 0
+                items = dataList.map { item -> item.mediaItem },
+                itemToPlay = itemIndex
             )
         }
 

+ 1 - 0
app/src/main/kotlin/org/mjdev/tvapp/viewmodel/DetailViewModel.kt

@@ -52,6 +52,7 @@ class DetailViewModel @Inject constructor() : BaseViewModel() {
         }
     }
 
+    // todo this should be improved
     fun mediaItemsFor(
         data: Any?
     ): List<Any?> = when (data) {

+ 2 - 0
tvlib/src/main/kotlin/org/mjdev/tvlib/extensions/ListExt.kt

@@ -29,6 +29,8 @@ object ListExt {
         }
     }
 
+    fun <T> List<T>.indexOf(predicate: (T) -> Boolean) = indexOf(first(predicate))
+
     fun <T> List<T>.contains(block: (T) -> Boolean) = count(block) > 0
 
     fun <T> List<T>.containsNot(block: (T) -> Boolean) = count(block) == 0

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

@@ -62,7 +62,6 @@ object MediaItemExt {
         get() = MediaMetadata.Builder()
             .setDisplayTitle(title)
             .setMediaType(mediaType)
-
             .setArtworkUri(imageUrl.toString().parseUri())
             .build()
 

+ 10 - 11
tvlib/src/main/kotlin/org/mjdev/tvlib/helpers/cursor/AudioItem.kt

@@ -9,7 +9,6 @@
 package org.mjdev.tvlib.helpers.cursor
 
 import android.database.Cursor
-import android.media.MediaMetadataRetriever
 import android.net.Uri
 import android.provider.MediaStore
 import org.mjdev.tvlib.extensions.CursorExt.asMap
@@ -19,7 +18,6 @@ import org.mjdev.tvlib.interfaces.ItemWithDescription
 import org.mjdev.tvlib.interfaces.ItemWithImage
 import org.mjdev.tvlib.interfaces.ItemWithTitle
 import org.mjdev.tvlib.interfaces.ItemWithUri
-import timber.log.Timber
 import java.io.Serializable
 
 @Suppress("unused")
@@ -48,15 +46,16 @@ class AudioItem() :
                 }
             }
         }
-        try {
-            MediaMetadataRetriever().apply {
-                setDataSource(uri)
-            }.also { mmr ->
-                date = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE)
-            }
-        } catch (e: Exception) {
-            Timber.e(e)
-        }
+// todo move to another thread
+//        try {
+//            MediaMetadataRetriever().apply {
+//                setDataSource(uri)
+//            }.also { mmr ->
+//                date = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE)
+//            }
+//        } catch (e: Exception) {
+//            Timber.e(e)
+//        }
     }
 
     override fun equals(other: Any?): Boolean {

+ 6 - 7
tvlib/src/main/kotlin/org/mjdev/tvlib/helpers/cursor/PhotoItem.kt

@@ -11,7 +11,6 @@ package org.mjdev.tvlib.helpers.cursor
 import android.database.Cursor
 import android.net.Uri
 import android.provider.MediaStore
-import androidx.exifinterface.media.ExifInterface
 import org.mjdev.tvlib.extensions.CursorExt.asMap
 import org.mjdev.tvlib.interfaces.ItemPhoto
 import org.mjdev.tvlib.interfaces.ItemWithBackground
@@ -19,7 +18,6 @@ import org.mjdev.tvlib.interfaces.ItemWithDate
 import org.mjdev.tvlib.interfaces.ItemWithDescription
 import org.mjdev.tvlib.interfaces.ItemWithImage
 import org.mjdev.tvlib.interfaces.ItemWithTitle
-import timber.log.Timber
 import java.io.Serializable
 
 @Suppress("unused")
@@ -55,11 +53,12 @@ class PhotoItem() :
                 }
             }
         }
-        try {
-            date = ExifInterface(image.toString()).getAttribute(ExifInterface.TAG_DATETIME)
-        } catch (e: Exception) {
-            Timber.e(e)
-        }
+// todo move to another thread
+//        try {
+//            date = ExifInterface(image.toString()).getAttribute(ExifInterface.TAG_DATETIME)
+//        } catch (e: Exception) {
+//            Timber.e(e)
+//        }
     }
 
     override fun equals(other: Any?): Boolean {

+ 10 - 11
tvlib/src/main/kotlin/org/mjdev/tvlib/helpers/cursor/VideoItem.kt

@@ -9,7 +9,6 @@
 package org.mjdev.tvlib.helpers.cursor
 
 import android.database.Cursor
-import android.media.MediaMetadataRetriever
 import android.net.Uri
 import android.provider.MediaStore
 import org.mjdev.tvlib.extensions.CursorExt.asMap
@@ -19,7 +18,6 @@ import org.mjdev.tvlib.interfaces.ItemWithDescription
 import org.mjdev.tvlib.interfaces.ItemWithImage
 import org.mjdev.tvlib.interfaces.ItemWithTitle
 import org.mjdev.tvlib.interfaces.ItemWithUri
-import timber.log.Timber
 import java.io.Serializable
 
 @Suppress("unused")
@@ -48,15 +46,16 @@ class VideoItem() :
                 }
             }
         }
-        try {
-            MediaMetadataRetriever().apply {
-                setDataSource(uri)
-            }.also { mmr ->
-                date = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE)
-            }
-        } catch (e: Exception) {
-            Timber.e(e)
-        }
+// todo move to another thread
+//        try {
+//            MediaMetadataRetriever().apply {
+//                setDataSource(uri)
+//            }.also { mmr ->
+//                date = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE)
+//            }
+//        } catch (e: Exception) {
+//            Timber.e(e)
+//        }
     }
 
     override fun equals(other: Any?): Boolean {

+ 1 - 0
tvlib/src/main/kotlin/org/mjdev/tvlib/ui/components/audiopreview/dailymotion/DailyMotionVideoView.kt

@@ -114,6 +114,7 @@ class DailyMotionVideoView @JvmOverloads constructor(
         success: () -> Unit,
         error: (error: Exception) -> Unit
     ) {
+        visibility = View.INVISIBLE
         var q: String?
         if (filePath != null) {
             var mr: MediaMetadataRetriever? = null