diff --git a/android/app/src/main/java/com/naviapp/app/BaseApplication.kt b/android/app/src/main/java/com/naviapp/app/BaseApplication.kt index 8b433f61dd..2fa6edcad3 100644 --- a/android/app/src/main/java/com/naviapp/app/BaseApplication.kt +++ b/android/app/src/main/java/com/naviapp/app/BaseApplication.kt @@ -29,7 +29,14 @@ import timber.log.Timber abstract class BaseApplication : MultiDexApplication(), ReactApplication, Media3SimpleCache { - private lateinit var media3SimpleCache: SimpleCache + override val media3SimpleCache by lazy { + val downloadContentDirectory = File(this.getExternalFilesDir(null), "downloads") + SimpleCache( + downloadContentDirectory, + LeastRecentlyUsedCacheEvictor(100_000_000), + StandaloneDatabaseProvider(this) + ) + } override fun attachBaseContext(base: Context?) { super.attachBaseContext(base) @@ -65,17 +72,4 @@ abstract class BaseApplication : MultiDexApplication(), ReactApplication, Media3 } } } - - override fun getMedia3SimpleCache(): SimpleCache { - if (::media3SimpleCache.isInitialized.not()) { - val downloadContentDirectory = File(this.getExternalFilesDir(null), "downloads") - media3SimpleCache = - SimpleCache( - downloadContentDirectory, - LeastRecentlyUsedCacheEvictor(100_000_000), - StandaloneDatabaseProvider(this) - ) - } - return media3SimpleCache - } } diff --git a/android/gradle/libs.versions.toml b/android/gradle/libs.versions.toml index 4d31508cea..ced4a4f204 100644 --- a/android/gradle/libs.versions.toml +++ b/android/gradle/libs.versions.toml @@ -101,7 +101,7 @@ navi-adverse = "1.3.0-20240917.145607-3" navi-alfred = "1.15.1" navi-guarddog = "3.5.0" navi-pulse = "1.7.0" -navi-uitron = "1.22.0-20240919.222205-9" +navi-uitron = "1.23.0" navigation = "2.5.3" okhttp-bom = "4.12.0" otaliastudios-cameraview = "2.7.2" diff --git a/android/navi-common/src/main/java/com/navi/common/media3simplecache/Media3SimpleCache.kt b/android/navi-common/src/main/java/com/navi/common/media3simplecache/Media3SimpleCache.kt index 018ffd4766..3f93070153 100644 --- a/android/navi-common/src/main/java/com/navi/common/media3simplecache/Media3SimpleCache.kt +++ b/android/navi-common/src/main/java/com/navi/common/media3simplecache/Media3SimpleCache.kt @@ -24,5 +24,5 @@ interface Media3SimpleCache { * * @return A [SimpleCache] instance. */ - fun getMedia3SimpleCache(): SimpleCache + val media3SimpleCache: SimpleCache } diff --git a/android/navi-common/src/main/java/com/navi/common/uitron/helper/VideoViewHelper.kt b/android/navi-common/src/main/java/com/navi/common/uitron/helper/VideoViewHelper.kt index e79eb84599..b5673b6bee 100644 --- a/android/navi-common/src/main/java/com/navi/common/uitron/helper/VideoViewHelper.kt +++ b/android/navi-common/src/main/java/com/navi/common/uitron/helper/VideoViewHelper.kt @@ -42,8 +42,7 @@ class VideoViewHelper @Inject constructor() { } private fun getFactory(): ProgressiveMediaSource.Factory { - val downloadCache = - (AppServiceManager.application as Media3SimpleCache).getMedia3SimpleCache() + val downloadCache = (AppServiceManager.application as Media3SimpleCache).media3SimpleCache val cacheSink = CacheDataSink.Factory().setCache(downloadCache) val downstreamFactory = FileDataSource.Factory() val upstreamFactory = diff --git a/android/navi-common/src/main/java/com/navi/common/uitron/model/property/VideoViewProperty.kt b/android/navi-common/src/main/java/com/navi/common/uitron/model/property/VideoViewProperty.kt index a5c3501d68..118e1da07c 100644 --- a/android/navi-common/src/main/java/com/navi/common/uitron/model/property/VideoViewProperty.kt +++ b/android/navi-common/src/main/java/com/navi/common/uitron/model/property/VideoViewProperty.kt @@ -7,6 +7,9 @@ package com.navi.common.uitron.model.property +import com.navi.uitron.model.UiTronResponse import com.navi.uitron.model.ui.BaseProperty -class VideoViewProperty : BaseProperty() +class VideoViewProperty( + val placeHolderView: UiTronResponse? = null, +) : BaseProperty() diff --git a/android/navi-common/src/main/java/com/navi/common/uitron/render/VideoViewRenderer.kt b/android/navi-common/src/main/java/com/navi/common/uitron/render/VideoViewRenderer.kt index 031a279b30..3718b27810 100644 --- a/android/navi-common/src/main/java/com/navi/common/uitron/render/VideoViewRenderer.kt +++ b/android/navi-common/src/main/java/com/navi/common/uitron/render/VideoViewRenderer.kt @@ -32,6 +32,7 @@ import com.navi.common.uitron.model.data.VideoViewData import com.navi.common.uitron.model.property.VideoViewProperty import com.navi.uitron.model.data.UiTronData import com.navi.uitron.render.Renderer +import com.navi.uitron.render.UiTronRenderer import com.navi.uitron.utils.clip import com.navi.uitron.utils.customClickable import com.navi.uitron.utils.customCombinedClick @@ -133,7 +134,16 @@ class VideoViewRenderer( Box { AndroidView(modifier = viewModifier, factory = { playerView }) if (placeholderVisibility.value) { - Box(viewModifier.background(Color.White)) + property.placeHolderView?.let { + UiTronRenderer( + it.data, + uiTronViewModel, + ) + .Render( + composeViews = it.parentComposeView.orEmpty(), + modifier = viewModifier, + ) + } ?: Box(viewModifier.background(Color.White)) } } diff --git a/android/navi-common/src/main/java/com/navi/common/uitron/util/UiTronDependencyProvider.kt b/android/navi-common/src/main/java/com/navi/common/uitron/util/UiTronDependencyProvider.kt index 2272eeb228..8baf29c12e 100644 --- a/android/navi-common/src/main/java/com/navi/common/uitron/util/UiTronDependencyProvider.kt +++ b/android/navi-common/src/main/java/com/navi/common/uitron/util/UiTronDependencyProvider.kt @@ -12,9 +12,12 @@ import android.view.View import androidx.compose.ui.graphics.Shape import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight +import androidx.media3.datasource.cache.SimpleCache import com.navi.alfred.AlfredManager +import com.navi.base.AppServiceManager import com.navi.base.utils.BaseUtils import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper +import com.navi.common.media3simplecache.Media3SimpleCache import com.navi.common.utils.CommonUtils.shortenMoney import com.navi.common.utils.Constants.MAX_MONEY_LENGTH import com.navi.common.utils.Constants.SHORTEN_MONEY @@ -138,4 +141,8 @@ class UiTronDependencyProvider(private val context: Context) : IUiTronDependency AlfredManager.sensitiveComposeRepository.blurSensitiveScreen(blur) } } + + override fun getMedia3SimpleCache(): SimpleCache { + return (AppServiceManager.application as Media3SimpleCache).media3SimpleCache + } } diff --git a/android/navi-widgets/build.gradle b/android/navi-widgets/build.gradle index d456b5685c..f5f968b6f4 100644 --- a/android/navi-widgets/build.gradle +++ b/android/navi-widgets/build.gradle @@ -75,7 +75,9 @@ dependencies { api libs.androidx.paging.runtime.ktx api libs.masayukiSuda.easingInterpolator api libs.navi.adverse - api libs.navi.uitron + api (libs.navi.uitron) { + exclude group: "com.google.guava", module: "guava" + } implementation libs.android.flexbox implementation libs.android.material