diff --git a/app/src/main/kotlin/com/subtracks/ui/playback/NowPlayingScreen.kt b/app/src/main/kotlin/com/subtracks/ui/playback/NowPlayingScreen.kt index ade28379..f80ebc38 100644 --- a/app/src/main/kotlin/com/subtracks/ui/playback/NowPlayingScreen.kt +++ b/app/src/main/kotlin/com/subtracks/ui/playback/NowPlayingScreen.kt @@ -1,6 +1,5 @@ package com.subtracks.ui.playback -import android.content.Context import androidx.compose.foundation.background import androidx.compose.foundation.basicMarquee import androidx.compose.foundation.clickable @@ -63,10 +62,7 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.compose.collectAsStateWithLifecycle -import coil3.SingletonImageLoader import coil3.compose.LocalPlatformContext -import coil3.request.CachePolicy -import coil3.request.ImageRequest import com.subtracks.data.model.CoverArtRef import com.subtracks.data.model.QueueKind import com.subtracks.data.model.Song @@ -141,10 +137,8 @@ fun NowPlayingRoute( } LaunchedEffect(state.item?.id, state.hasNext) { if (!state.hasNext) return@LaunchedEffect - controller.upcomingItem()?.let { next -> - controller.coverArt(next, thumbnail = true)?.let { ArtworkSeedCache.prefetch(context, it) } - controller.coverArt(next)?.let { prefetchImage(context, it) } - } + val next = controller.upcomingItem() ?: return@LaunchedEffect + controller.coverArt(next, thumbnail = true)?.let { ArtworkSeedCache.prefetch(context, it) } } NowPlayingScreen( state = state, @@ -170,28 +164,6 @@ fun NowPlayingRoute( ) } -internal fun prefetchImage( - context: Context, - ref: CoverArtRef, -) { - SingletonImageLoader.get(context).enqueue(prefetchImageRequest(context, ref)) -} - -internal fun prefetchImageRequest( - context: Context, - ref: CoverArtRef, -): ImageRequest { - val metrics = context.resources.displayMetrics - val maxDimension = maxOf(metrics.widthPixels, metrics.heightPixels) - return ImageRequest - .Builder(context) - .data(ref.url) - .diskCacheKey(ref.cacheKey) - .memoryCachePolicy(CachePolicy.DISABLED) - .size(maxDimension) - .build() -} - @OptIn(ExperimentalMaterial3Api::class) @Composable fun NowPlayingScreen( diff --git a/app/src/test/kotlin/com/subtracks/ui/playback/NowPlayingArtworkTest.kt b/app/src/test/kotlin/com/subtracks/ui/playback/NowPlayingArtworkTest.kt deleted file mode 100644 index 9449464d..00000000 --- a/app/src/test/kotlin/com/subtracks/ui/playback/NowPlayingArtworkTest.kt +++ /dev/null @@ -1,40 +0,0 @@ -package com.subtracks.ui.playback - -import android.content.Context -import androidx.test.core.app.ApplicationProvider -import androidx.test.ext.junit.runners.AndroidJUnit4 -import coil3.SingletonImageLoader -import coil3.annotation.DelicateCoilApi -import coil3.request.CachePolicy -import coil3.size.Dimension -import com.subtracks.data.model.CoverArtRef -import kotlinx.coroutines.runBlocking -import org.junit.After -import org.junit.Assert.assertEquals -import org.junit.Test -import org.junit.runner.RunWith - -@OptIn(DelicateCoilApi::class) -@RunWith(AndroidJUnit4::class) -class NowPlayingArtworkTest { - @After - fun resetImageLoader() { - SingletonImageLoader.reset() - } - - @Test - fun prefetchingTheNextOriginalIsBoundedToTheScreen() = - runBlocking { - val context = ApplicationProvider.getApplicationContext() - val ref = CoverArtRef(url = "http://example.test/art", cacheKey = "1:art:false") - - val request = prefetchImageRequest(context, ref) - val resolved = request.sizeResolver.size() - val width = (resolved.width as Dimension.Pixels).px - - val metrics = context.resources.displayMetrics - assertEquals(maxOf(metrics.widthPixels, metrics.heightPixels), width) - assertEquals(ref.cacheKey, request.diskCacheKey) - assertEquals(CachePolicy.DISABLED, request.memoryCachePolicy) - } -}