diff --git a/app/src/main/java/org/oxycblt/auxio/image/extractor/Components.kt b/app/src/main/java/org/oxycblt/auxio/image/extractor/Components.kt index bd2f8f1a2..3f0ecfb38 100644 --- a/app/src/main/java/org/oxycblt/auxio/image/extractor/Components.kt +++ b/app/src/main/java/org/oxycblt/auxio/image/extractor/Components.kt @@ -35,20 +35,13 @@ import okio.source import org.oxycblt.auxio.list.Sort import org.oxycblt.auxio.music.* -/** - * A [Keyer] implementation for [Music] data. - * - * @author Alexander Capehart (OxygenCobalt) - */ -class MusicKeyer : Keyer { - // TODO: Include hashcode of child songs for parents - override fun key(data: Music, options: Options) = - if (data is Song) { - // Group up song covers with album covers for better caching - data.album.uid.toString() - } else { - data.uid.toString() - } +class SongKeyer @Inject constructor() : Keyer { + override fun key(data: Song, options: Options) = + "${data.album.uid}${data.album.songs.hashCode()}" +} + +class ParentKeyer @Inject constructor() : Keyer { + override fun key(data: MusicParent, options: Options) = "${data.uid}${data.songs.hashCode()}" } /** diff --git a/app/src/main/java/org/oxycblt/auxio/image/extractor/ExtractorModule.kt b/app/src/main/java/org/oxycblt/auxio/image/extractor/ExtractorModule.kt index 91adba89e..82ec32e07 100644 --- a/app/src/main/java/org/oxycblt/auxio/image/extractor/ExtractorModule.kt +++ b/app/src/main/java/org/oxycblt/auxio/image/extractor/ExtractorModule.kt @@ -35,6 +35,8 @@ class ExtractorModule { @Provides fun imageLoader( @ApplicationContext context: Context, + songKeyer: SongKeyer, + parentKeyer: ParentKeyer, songFactory: AlbumCoverFetcher.SongFactory, albumFactory: AlbumCoverFetcher.AlbumFactory, artistFactory: ArtistImageFetcher.Factory, @@ -44,7 +46,8 @@ class ExtractorModule { ImageLoader.Builder(context) .components { // Add fetchers for Music components to make them usable with ImageRequest - add(MusicKeyer()) + add(songKeyer) + add(parentKeyer) add(songFactory) add(albumFactory) add(artistFactory)