Do proper cache organization
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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") ?: "?",
|
||||||
|
|||||||
Reference in New Issue
Block a user