From 784c94193839b912c236b74f838709f69d553045 Mon Sep 17 00:00:00 2001 From: vfsfitvnm Date: Fri, 9 Sep 2022 12:46:37 +0200 Subject: [PATCH] Do proper cache organization --- .../it/vfsfitvnm/vimusic/MainApplication.kt | 2 +- .../vimusic/service/PlayerService.kt | 19 ++++++++++++++++++- .../it/vfsfitvnm/vimusic/ui/views/SongItem.kt | 7 +------ 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/MainApplication.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/MainApplication.kt index bb6e259..80e88af 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/MainApplication.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/MainApplication.kt @@ -20,7 +20,7 @@ class MainApplication : Application(), ImageLoaderFactory { .crossfade(true) .diskCache( DiskCache.Builder() - .directory(filesDir.resolve("coil")) + .directory(cacheDir.resolve("coil")) .maxSizeBytes( preferences.getEnum( coilDiskCacheMaxSizeKey, diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/service/PlayerService.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/service/PlayerService.kt index d6c7535..a2aecb1 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/service/PlayerService.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/service/PlayerService.kt @@ -28,6 +28,7 @@ import androidx.core.content.ContextCompat.startForegroundService import androidx.core.content.edit import androidx.core.content.getSystemService import androidx.core.net.toUri +import androidx.core.text.isDigitsOnly import androidx.media3.common.AudioAttributes import androidx.media3.common.C import androidx.media3.common.MediaItem @@ -181,7 +182,23 @@ class PlayerService : InvincibleService(), Player.Listener, PlaybackStatsListene else -> LeastRecentlyUsedCacheEvictor(size.bytes) } - cache = SimpleCache(cacheDir, cacheEvictor, StandaloneDatabaseProvider(this)) + // TODO: Remove in a future release + val directory = cacheDir.resolve("exoplayer").also { directory -> + if (directory.exists()) return@also + + directory.mkdir() + + cacheDir.listFiles()?.forEach { file -> + if (file.isDirectory && file.name.length == 1 && file.name.isDigitsOnly() || file.extension == "uid") { + if (!file.renameTo(directory.resolve(file.name))) { + file.deleteRecursively() + } + } + } + + filesDir.resolve("coil").deleteRecursively() + } + cache = SimpleCache(directory, cacheEvictor, StandaloneDatabaseProvider(this)) player = ExoPlayer.Builder(this, createRendersFactory(), createMediaSourceFactory()) .setHandleAudioBecomingNoisy(true) diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/views/SongItem.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/views/SongItem.kt index b67fd9f..835d2e4 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/views/SongItem.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/views/SongItem.kt @@ -22,12 +22,10 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.media3.common.MediaItem import coil.compose.AsyncImage -import coil.request.ImageRequest import it.vfsfitvnm.vimusic.enums.ThumbnailRoundness import it.vfsfitvnm.vimusic.models.DetailedSong import it.vfsfitvnm.vimusic.ui.components.LocalMenuState @@ -50,10 +48,7 @@ fun SongItem( trailingContent: (@Composable () -> Unit)? = null ) { SongItem( - thumbnailModel = ImageRequest.Builder(LocalContext.current) - .diskCacheKey(mediaItem.mediaId) - .data(mediaItem.mediaMetadata.artworkUri.thumbnail(thumbnailSize)) - .build(), + thumbnailModel = mediaItem.mediaMetadata.artworkUri.thumbnail(thumbnailSize), title = mediaItem.mediaMetadata.title!!.toString(), authors = mediaItem.mediaMetadata.artist.toString(), durationText = mediaItem.mediaMetadata.extras?.getString("durationText") ?: "?",