Ver Fonte

lib versions bump

milan jurkulák há 2 anos atrás
pai
commit
0cf1def97d

+ 8 - 1
app/src/main/kotlin/org/mjdev/tvapp/ui/screens/IPTVScreen.kt

@@ -61,11 +61,18 @@ class IPTVScreen : Screen() {
             Application.getDI(LocalContext.current)
         }
         val data: Any? = args[data]
+        val dataUri = data.uri
         val dataList: List<MediaItem> = remember(data) {
             viewModel.mediaItemsFor(data)
         }
         val index = remember(data) {
-            dataList.indexOf<Any?> { item -> item.uri == data.uri }
+            dataList.indexOf<Any?> { item ->
+                item.uri.contentEquals(dataUri)
+            }
+        }
+
+        if (index < 0) {
+            throw (RuntimeException("Can not find index of media item."))
         }
 
         pauseSyncUntilGone()

+ 6 - 19
app/src/main/kotlin/org/mjdev/tvapp/viewmodel/IPTVViewModel.kt

@@ -26,7 +26,6 @@ import org.mjdev.tvlib.interfaces.ItemAudio
 import org.mjdev.tvlib.interfaces.ItemPhoto
 import org.mjdev.tvlib.interfaces.ItemVideo
 import org.mjdev.tvlib.network.NetworkConnectivityService
-import kotlin.reflect.KClass
 
 class IPTVViewModel(context: Context) : BaseViewModel(context) {
 
@@ -38,32 +37,20 @@ class IPTVViewModel(context: Context) : BaseViewModel(context) {
     private val localPhotoCursor: PhotoCursor by instance()
 
     private val mediaItems: List<Any> get() = dao.movieDao.all
-    private val cache = mutableMapOf<KClass<*>, List<MediaItem>>()
 
     fun mediaItemsFor(
         data: Any?
     ): List<MediaItem> = when (data) {
-        is ItemAudio -> getCachedList<ItemAudio> { localAudioCursor }
-        is ItemVideo -> getCachedList<ItemVideo> { localVideoCursor }
-        is ItemPhoto -> getCachedList<ItemPhoto> { localPhotoCursor }
-        is Media -> getCachedList<Media> {
-            mediaItems.filter { listItem ->
-                (listItem as? Media?)?.category == data.category
-            }
-        }
+        is ItemAudio -> localAudioCursor.map { item -> item.mediaItem }
+        is ItemVideo -> localVideoCursor.map { item -> item.mediaItem }
+        is ItemPhoto -> localPhotoCursor.map { item -> item.mediaItem }
+        is Media -> mediaItems.filter { listItem ->
+            (listItem as? Media?)?.category.contentEquals(data.category)
+        }.map { item -> item.mediaItem }
 
         else -> listOf(data.mediaItem)
     }
 
-    private inline fun <reified T> getCachedList(creator: () -> List<*>): List<MediaItem> {
-        if (!cache.containsKey(T::class)) {
-            creator().let { list ->
-                cache[T::class] = list.map { item -> item.mediaItem }
-            }
-        }
-        return cache[T::class] ?: emptyList()
-    }
-
     override fun mockDI(context: Context): DI = Application.getDI(context)
 
 }

+ 1 - 1
build.gradle.kts

@@ -34,7 +34,7 @@ buildscript {
         classpath(libs.gradle.paparazzi.plugin)
         classpath(libs.gradle.kotlinter)
         classpath(libs.gradle.dokka.plugin)
-        classpath(libs.gradle.markdown.plugin)
+//        classpath(libs.gradle.markdown.plugin)
 //        classpath(libs.gradle.ospackage.plugin)
     }
 

+ 1 - 1
buildSrc/build.gradle.kts

@@ -35,7 +35,7 @@ dependencies {
     implementation(libs.gradle.kotlin.plugin)
     implementation(libs.gradle.detekt.plugin)
     implementation(libs.gradle.dokka.plugin)
-    implementation(libs.gradle.markdown.plugin)
+//    implementation(libs.gradle.markdown.plugin)
     implementation(libs.gradle.kotlinter)
     implementation(libs.jsoup)
     implementation(libs.kotlin.stdlib.jdk8)

+ 2 - 3
buildSrc/src/main/kotlin/org/mjdev/gradle/extensions/ProjectExt.kt

@@ -41,7 +41,6 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 import org.mjdev.gradle.tasks.CreatePropsTask
 import org.mjdev.gradle.tasks.CleanProjectTask
-import org.kordamp.gradle.plugin.markdown.tasks.MarkdownToHtmlTask
 import org.mjdev.gradle.tasks.ReleaseNotesCreateTask
 import org.mjdev.gradle.tasks.WebServiceCreateTask
 import org.mjdev.gradle.tasks.ZipReleaseCreateTask
@@ -358,8 +357,8 @@ fun Project.zipReleaseCreateTask(scoped: ZipReleaseCreateTask.() -> Unit = {}) =
 fun Project.dokkaTask(scoped: DokkaTask.() -> Unit) =
     task<DokkaTask>(scoped)
 
-fun Project.markDownToHtmlTask(scoped: MarkdownToHtmlTask.() -> Unit) =
-    task<MarkdownToHtmlTask>(scoped)
+//fun Project.markDownToHtmlTask(scoped: MarkdownToHtmlTask.() -> Unit) =
+//    task<MarkdownToHtmlTask>(scoped)
 
 fun Project.registerSources(outDir: File, variant: BaseVariant) {
     if (outDir.absolutePath.contains("generated/source")) {

+ 3 - 7
buildSrc/src/main/kotlin/org/mjdev/gradle/plugin/AppPlugin.kt

@@ -19,7 +19,6 @@ import org.gradle.kotlin.dsl.dependencies
 import org.jetbrains.dokka.Platform
 import org.jmailen.gradle.kotlinter.KotlinterExtension
 import org.jmailen.gradle.kotlinter.KotlinterPlugin
-import org.kordamp.gradle.plugin.markdown.MarkdownPlugin
 import org.mjdev.gradle.base.BasePlugin
 import org.mjdev.gradle.extensions.addSyncProviderAuthString
 import org.mjdev.gradle.extensions.androidTestImplementation
@@ -40,12 +39,10 @@ import org.mjdev.gradle.extensions.ksp
 import org.mjdev.gradle.extensions.libs
 import org.mjdev.gradle.extensions.loadRootPropertiesFile
 import org.mjdev.gradle.extensions.manifestPlaceholders
-import org.mjdev.gradle.extensions.markDownToHtmlTask
 import org.mjdev.gradle.extensions.projectName
 import org.mjdev.gradle.extensions.registerTask
 import org.mjdev.gradle.extensions.releaseNotesCreateTask
 import org.mjdev.gradle.extensions.runAfterAssembleTask
-import org.mjdev.gradle.extensions.runBeforeAssemble
 import org.mjdev.gradle.extensions.setSigningConfigs
 import org.mjdev.gradle.extensions.stringRes
 import org.mjdev.gradle.extensions.testImplementation
@@ -55,7 +52,6 @@ import org.mjdev.gradle.extensions.versionName
 import org.mjdev.gradle.extensions.webServiceCreateTask
 import org.mjdev.gradle.extensions.zipReleaseCreateTask
 import org.mjdev.gradle.plugin.config.AppConfig
-import org.mjdev.gradle.plugin.config.LibConfig
 import org.mjdev.gradle.tasks.CheckNewLibsTask
 import org.mjdev.gradle.tasks.CleanProjectTask
 import org.mjdev.gradle.tasks.CreatePropsTask
@@ -78,7 +74,7 @@ class AppPlugin : BasePlugin() {
         applyPlugin(libs.plugins.gradle.dokka)
         applyPlugin(libs.plugins.kotlin.compose.compiler)
         applyPlugin(libs.plugins.gradle.paparazzi.plugin)
-        applyPlugin<MarkdownPlugin>()
+//        applyPlugin<MarkdownPlugin>()
         applyPlugin<DetektPlugin>()
         applyPlugin<KotlinterPlugin>()
         registerTask<CleanProjectTask>()
@@ -237,7 +233,7 @@ class AppPlugin : BasePlugin() {
                     enabled = false
                 }
             }
-            markDownToHtmlTask {
+//            markDownToHtmlTask {
 //            enabled = appConfig.createWebSiteFromGit
 //                sourceDir = rootDir
 //                outputDir = rootDir.resolve("web")
@@ -259,7 +255,7 @@ class AppPlugin : BasePlugin() {
 //                if(createWebSiteFromGit) {
 //                    runAfterAssembleTask()
 //                }
-            }
+//            }
             releaseNotesCreateTask {
                 if (appConfig.createReleaseNotes) {
                     runAfterAssembleTask()

+ 13 - 13
gradle/libs.versions.toml

@@ -6,25 +6,25 @@ aescrypt = "0.0.1"
 #android-material = "1.12.0"
 androidsvg-aar = "1.4"
 #
-androidx-activity-compose = "1.9.0"
-androidx-compose-bom = "2024.06.00"
+androidx-activity-compose = "1.9.1"
+androidx-compose-bom = "2024.08.00"
 androidx-customview-poolingcontainer = "1.0.0"
-androidx-espresso-core = "3.5.1"
+androidx-espresso-core = "3.6.1"
 androidx-exifinterface = "1.3.7"
 androidx-foundation = "1.6.8"
 androidx-glance-appwidget = "1.1.0"
 androidx-junit = "1.2.1"
 androidx-ktx = "1.13.1"
-androidx-lifecycle-viewmodel-compose = "2.8.2"
+androidx-lifecycle-viewmodel-compose = "2.8.4"
 androidx-material-icons-extended = "1.6.8"
 #androidx-material3 = "1.2.1"
-androidx-media3 = "1.3.1"
+androidx-media3 = "1.4.1"
 androidx-navigation-compose = "2.7.7"
 androidx-palette-ktx = "1.0.0"
-androidx-tv = "1.0.0-beta01"
-androidx-tv-foundation = "1.0.0-alpha10"
+androidx-tv = "1.0.0"
+androidx-tv-foundation = "1.0.0-alpha11"
 androidx-window = "1.3.0"
-androidx-work-runtime-ktx = "2.9.0"
+androidx-work-runtime-ktx = "2.9.1"
 anrwatchdog = "1.4.0"
 #apk-parser = "2.6.10"
 #auth0 = "2.10.2"
@@ -32,13 +32,13 @@ compose = "4.14.0"
 converter-moshi = "2.11.0"
 dailymotion-sdk-android = "0.2.12"
 #
-dependency-analysis-gradle-plugin = "0.10.0"
+#dependency-analysis-gradle-plugin = "0.10.0"
 #detekt-formatting = "1.23.4"
 detekt-gradle-plugin = "1.23.6"
 dokka-gradle-plugin = "1.9.20"
 google-api-services-androidpublisher = "v3-rev41-1.25.0"
-gradle = "8.4.2"
-gradle-docker-plugin = "9.4.0"
+gradle = "8.5.2"
+#gradle-docker-plugin = "9.4.0"
 #gradleOspackagePlugin = "9.1.1"
 ini4j = "0.5.4"
 #
@@ -66,7 +66,7 @@ okhttp3-logging-interceptor = "5.0.0-alpha.14"
 org-eclipse-jgit = "4.8.0.201706111038-r"
 paparazzi-gradle-plugin = "1.3.4"
 photofilter = "2.0.2"
-r8 = "8.3.37"
+r8 = "8.5.35"
 retrofit2-kotlin-coroutines-adapter = "0.9.2"
 sandwich = "2.0.7"
 timber = "5.0.1"
@@ -76,7 +76,7 @@ gradle-catalogs-update = "0.8.4"
 gradle-versions = "0.51.0"
 ktlint = "11.3.2"
 ksp = "2.0.0-1.0.22"
-compose-screenshot="0.0.1-alpha02"
+compose-screenshot="0.0.1-alpha04"
 idea = "242.8057"
 # libraries ########################################################################################
 [libraries]

+ 1 - 1
gradle/wrapper/gradle-wrapper.properties

@@ -9,6 +9,6 @@
 #Mon May 20 13:58:31 CEST 2024
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists

+ 0 - 5
mkdocs.yml

@@ -1,6 +1,5 @@
 site_name: Compose TV App and Lib
 docs_dir: documentation
-
 theme:
   name: material
   features:
@@ -20,10 +19,8 @@ theme:
       toggle:
         icon: material/brightness-7
         name: Switch to dark mode
-
 repo_name: mimoccc/tvapp
 repo_url: https://github.com/mimoccc/tvapp
-
 markdown_extensions:
   - pymdownx.highlight:
       anchor_linenums: true
@@ -35,10 +32,8 @@ markdown_extensions:
   - attr_list
   - md_in_html
   - def_list
-
 plugins:
   - glightbox
-
 nav:
   - Home: home.md
   - Release Notes: release-notes-1.3.1.md

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

@@ -47,7 +47,7 @@ object MediaItemExt {
             is ItemVideo -> this.uri.toString()
             is ItemPhoto -> this.uri.toString()
             else -> this.toString()
-        }
+        }.trim()
 
     val Any?.mediaType: Int
         get() = when (this) {

+ 4 - 4
tvlib/src/main/kotlin/org/mjdev/tvlib/ui/components/complex/VerticalScrollableBox.kt

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) Milan Jurkulák 2023.
+ *  Copyright (c) Milan Jurkulák 2024.
  *  Contact:
  *  e: mimoccc@gmail.com
  *  e: mj@mjdev.org
@@ -12,12 +12,12 @@ import android.annotation.SuppressLint
 import androidx.compose.foundation.gestures.detectVerticalDragGestures
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.lazy.LazyListState
+import androidx.compose.foundation.lazy.rememberLazyListState
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.input.pointer.pointerInput
-import androidx.tv.foundation.lazy.list.TvLazyListState
-import androidx.tv.foundation.lazy.list.rememberTvLazyListState
 import org.mjdev.tvlib.annotations.Previews
 import org.mjdev.tvlib.extensions.ComposeExt.isLandscapeMode
 
@@ -28,7 +28,7 @@ fun VerticalScrollableBox(
     modifier: Modifier = Modifier,
     contentAlignment: Alignment = Alignment.TopStart,
     propagateMinConstraints: Boolean = isLandscapeMode(),
-    state: TvLazyListState? = rememberTvLazyListState(),
+    state: LazyListState? = rememberLazyListState(),
     content: @Composable BoxScope.() -> Unit = {}
 ) = Box(
     modifier = modifier