Do proper cache organization

This commit is contained in:
vfsfitvnm 2022-09-09 12:46:37 +02:00
parent 996dbb4de1
commit 784c941938
3 changed files with 20 additions and 8 deletions

View file

@ -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,

View file

@ -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)

View file

@ -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") ?: "?",