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) .crossfade(true)
.diskCache( .diskCache(
DiskCache.Builder() DiskCache.Builder()
.directory(filesDir.resolve("coil")) .directory(cacheDir.resolve("coil"))
.maxSizeBytes( .maxSizeBytes(
preferences.getEnum( preferences.getEnum(
coilDiskCacheMaxSizeKey, coilDiskCacheMaxSizeKey,

View File

@@ -28,6 +28,7 @@ import androidx.core.content.ContextCompat.startForegroundService
import androidx.core.content.edit import androidx.core.content.edit
import androidx.core.content.getSystemService import androidx.core.content.getSystemService
import androidx.core.net.toUri import androidx.core.net.toUri
import androidx.core.text.isDigitsOnly
import androidx.media3.common.AudioAttributes import androidx.media3.common.AudioAttributes
import androidx.media3.common.C import androidx.media3.common.C
import androidx.media3.common.MediaItem import androidx.media3.common.MediaItem
@@ -181,7 +182,23 @@ class PlayerService : InvincibleService(), Player.Listener, PlaybackStatsListene
else -> LeastRecentlyUsedCacheEvictor(size.bytes) 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()) player = ExoPlayer.Builder(this, createRendersFactory(), createMediaSourceFactory())
.setHandleAudioBecomingNoisy(true) .setHandleAudioBecomingNoisy(true)

View File

@@ -22,12 +22,10 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.media3.common.MediaItem import androidx.media3.common.MediaItem
import coil.compose.AsyncImage import coil.compose.AsyncImage
import coil.request.ImageRequest
import it.vfsfitvnm.vimusic.enums.ThumbnailRoundness import it.vfsfitvnm.vimusic.enums.ThumbnailRoundness
import it.vfsfitvnm.vimusic.models.DetailedSong import it.vfsfitvnm.vimusic.models.DetailedSong
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
@@ -50,10 +48,7 @@ fun SongItem(
trailingContent: (@Composable () -> Unit)? = null trailingContent: (@Composable () -> Unit)? = null
) { ) {
SongItem( SongItem(
thumbnailModel = ImageRequest.Builder(LocalContext.current) thumbnailModel = mediaItem.mediaMetadata.artworkUri.thumbnail(thumbnailSize),
.diskCacheKey(mediaItem.mediaId)
.data(mediaItem.mediaMetadata.artworkUri.thumbnail(thumbnailSize))
.build(),
title = mediaItem.mediaMetadata.title!!.toString(), title = mediaItem.mediaMetadata.title!!.toString(),
authors = mediaItem.mediaMetadata.artist.toString(), authors = mediaItem.mediaMetadata.artist.toString(),
durationText = mediaItem.mediaMetadata.extras?.getString("durationText") ?: "?", durationText = mediaItem.mediaMetadata.extras?.getString("durationText") ?: "?",