mirror of
https://github.com/mihonapp/mihon.git
synced 2025-11-14 21:18:56 +01:00
Coil 2.x upgrade (#6725)
* Migrate to Coil 2 * Adapt to use coil disk cache * Update to alpha 7 * Update to alpha 8 * Update to rc01
This commit is contained in:
@@ -2,7 +2,7 @@ package eu.kanade.tachiyomi.ui.browse.extension
|
||||
|
||||
import android.view.View
|
||||
import androidx.core.view.isVisible
|
||||
import coil.clear
|
||||
import coil.dispose
|
||||
import coil.load
|
||||
import eu.davidea.viewholders.FlexibleViewHolder
|
||||
import eu.kanade.tachiyomi.R
|
||||
@@ -39,7 +39,7 @@ class ExtensionHolder(view: View, val adapter: ExtensionAdapter) :
|
||||
else -> ""
|
||||
}.uppercase()
|
||||
|
||||
binding.icon.clear()
|
||||
binding.icon.dispose()
|
||||
if (extension is Extension.Available) {
|
||||
binding.icon.load(extension.iconUrl)
|
||||
} else if (extension is Extension.Installed) {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package eu.kanade.tachiyomi.ui.browse.migration.manga
|
||||
|
||||
import android.view.View
|
||||
import coil.clear
|
||||
import coil.loadAny
|
||||
import coil.dispose
|
||||
import coil.load
|
||||
import eu.davidea.viewholders.FlexibleViewHolder
|
||||
import eu.kanade.tachiyomi.databinding.SourceListItemBinding
|
||||
|
||||
@@ -23,7 +23,7 @@ class MigrationMangaHolder(
|
||||
binding.title.text = item.manga.title
|
||||
|
||||
// Update the cover
|
||||
binding.thumbnail.clear()
|
||||
binding.thumbnail.loadAny(item.manga)
|
||||
binding.thumbnail.dispose()
|
||||
binding.thumbnail.load(item.manga)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package eu.kanade.tachiyomi.ui.browse.source.browse
|
||||
|
||||
import androidx.core.view.isVisible
|
||||
import coil.clear
|
||||
import coil.dispose
|
||||
import coil.imageLoader
|
||||
import coil.request.ImageRequest
|
||||
import coil.transition.CrossfadeTransition
|
||||
@@ -48,10 +48,10 @@ class SourceComfortableGridHolder(
|
||||
}
|
||||
|
||||
override fun setImage(manga: Manga) {
|
||||
binding.thumbnail.clear()
|
||||
binding.thumbnail.dispose()
|
||||
if (!manga.thumbnail_url.isNullOrEmpty()) {
|
||||
val crossfadeDuration = binding.root.context.imageLoader.defaults.transition.let {
|
||||
if (it is CrossfadeTransition) it.durationMillis else 0
|
||||
val crossfadeDuration = binding.root.context.imageLoader.defaults.transitionFactory.let {
|
||||
if (it is CrossfadeTransition.Factory) it.durationMillis else 0
|
||||
}
|
||||
val request = ImageRequest.Builder(binding.root.context)
|
||||
.data(manga)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package eu.kanade.tachiyomi.ui.browse.source.browse
|
||||
|
||||
import androidx.core.view.isVisible
|
||||
import coil.clear
|
||||
import coil.dispose
|
||||
import coil.imageLoader
|
||||
import coil.request.ImageRequest
|
||||
import coil.transition.CrossfadeTransition
|
||||
@@ -48,10 +48,10 @@ class SourceCompactGridHolder(
|
||||
}
|
||||
|
||||
override fun setImage(manga: Manga) {
|
||||
binding.thumbnail.clear()
|
||||
binding.thumbnail.dispose()
|
||||
if (!manga.thumbnail_url.isNullOrEmpty()) {
|
||||
val crossfadeDuration = binding.root.context.imageLoader.defaults.transition.let {
|
||||
if (it is CrossfadeTransition) it.durationMillis else 0
|
||||
val crossfadeDuration = binding.root.context.imageLoader.defaults.transitionFactory.let {
|
||||
if (it is CrossfadeTransition.Factory) it.durationMillis else 0
|
||||
}
|
||||
val request = ImageRequest.Builder(binding.root.context)
|
||||
.data(manga)
|
||||
|
||||
@@ -2,8 +2,8 @@ package eu.kanade.tachiyomi.ui.browse.source.browse
|
||||
|
||||
import android.view.View
|
||||
import androidx.core.view.isVisible
|
||||
import coil.clear
|
||||
import coil.loadAny
|
||||
import coil.dispose
|
||||
import coil.load
|
||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.coil.MangaCoverFetcher
|
||||
@@ -50,9 +50,9 @@ class SourceListHolder(private val view: View, adapter: FlexibleAdapter<*>) :
|
||||
}
|
||||
|
||||
override fun setImage(manga: Manga) {
|
||||
binding.thumbnail.clear()
|
||||
binding.thumbnail.dispose()
|
||||
if (!manga.thumbnail_url.isNullOrEmpty()) {
|
||||
binding.thumbnail.loadAny(manga) {
|
||||
binding.thumbnail.load(manga) {
|
||||
setParameter(MangaCoverFetcher.USE_CUSTOM_COVER, false)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package eu.kanade.tachiyomi.ui.browse.source.globalsearch
|
||||
|
||||
import android.view.View
|
||||
import androidx.core.view.isVisible
|
||||
import coil.clear
|
||||
import coil.dispose
|
||||
import coil.imageLoader
|
||||
import coil.request.ImageRequest
|
||||
import coil.transition.CrossfadeTransition
|
||||
@@ -53,10 +53,10 @@ class GlobalSearchCardHolder(view: View, adapter: GlobalSearchCardAdapter) :
|
||||
}
|
||||
|
||||
fun setImage(manga: Manga) {
|
||||
binding.cover.clear()
|
||||
binding.cover.dispose()
|
||||
if (!manga.thumbnail_url.isNullOrEmpty()) {
|
||||
val crossfadeDuration = itemView.context.imageLoader.defaults.transition.let {
|
||||
if (it is CrossfadeTransition) it.durationMillis else 0
|
||||
val crossfadeDuration = itemView.context.imageLoader.defaults.transitionFactory.let {
|
||||
if (it is CrossfadeTransition.Factory) it.durationMillis else 0
|
||||
}
|
||||
val request = ImageRequest.Builder(itemView.context)
|
||||
.data(manga)
|
||||
|
||||
@@ -2,11 +2,11 @@ package eu.kanade.tachiyomi.ui.library
|
||||
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import coil.clear
|
||||
import coil.dispose
|
||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||
import eu.davidea.flexibleadapter.items.IFlexible
|
||||
import eu.kanade.tachiyomi.databinding.SourceComfortableGridItemBinding
|
||||
import eu.kanade.tachiyomi.util.view.loadAnyAutoPause
|
||||
import eu.kanade.tachiyomi.util.view.loadAutoPause
|
||||
|
||||
/**
|
||||
* Class used to hold the displayed data of a manga in the library, like the cover or the title.
|
||||
@@ -55,7 +55,7 @@ class LibraryComfortableGridHolder(
|
||||
binding.badges.localText.isVisible = item.isLocal
|
||||
|
||||
// Update the cover.
|
||||
binding.thumbnail.clear()
|
||||
binding.thumbnail.loadAnyAutoPause(item.manga)
|
||||
binding.thumbnail.dispose()
|
||||
binding.thumbnail.loadAutoPause(item.manga)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package eu.kanade.tachiyomi.ui.library
|
||||
|
||||
import androidx.core.view.isVisible
|
||||
import coil.clear
|
||||
import coil.dispose
|
||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||
import eu.kanade.tachiyomi.databinding.SourceCompactGridItemBinding
|
||||
import eu.kanade.tachiyomi.util.view.loadAnyAutoPause
|
||||
import eu.kanade.tachiyomi.util.view.loadAutoPause
|
||||
|
||||
/**
|
||||
* Class used to hold the displayed data of a manga in the library, like the cover or the title.
|
||||
@@ -54,11 +54,11 @@ class LibraryCompactGridHolder(
|
||||
binding.badges.localText.isVisible = item.isLocal
|
||||
|
||||
// Update the cover.
|
||||
binding.thumbnail.clear()
|
||||
binding.thumbnail.dispose()
|
||||
if (coverOnly) {
|
||||
// Cover only mode: Hides title text unless thumbnail is unavailable
|
||||
if (!item.manga.thumbnail_url.isNullOrEmpty()) {
|
||||
binding.thumbnail.loadAnyAutoPause(item.manga)
|
||||
binding.thumbnail.loadAutoPause(item.manga)
|
||||
binding.title.isVisible = false
|
||||
} else {
|
||||
binding.title.text = item.manga.title
|
||||
@@ -66,7 +66,7 @@ class LibraryCompactGridHolder(
|
||||
}
|
||||
binding.thumbnail.foreground = null
|
||||
} else {
|
||||
binding.thumbnail.loadAnyAutoPause(item.manga)
|
||||
binding.thumbnail.loadAutoPause(item.manga)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@ package eu.kanade.tachiyomi.ui.library
|
||||
|
||||
import android.view.View
|
||||
import androidx.core.view.isVisible
|
||||
import coil.clear
|
||||
import coil.loadAny
|
||||
import coil.dispose
|
||||
import coil.load
|
||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||
import eu.kanade.tachiyomi.databinding.SourceListItemBinding
|
||||
|
||||
@@ -61,7 +61,7 @@ class LibraryListHolder(
|
||||
}
|
||||
|
||||
// Update the cover
|
||||
binding.thumbnail.clear()
|
||||
binding.thumbnail.loadAny(item.manga)
|
||||
binding.thumbnail.dispose()
|
||||
binding.thumbnail.load(item.manga)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -334,7 +334,7 @@ class MangaPresenter(
|
||||
* @return cover as Bitmap or null if there is no thumbnail cached with the memoryCacheKey
|
||||
*/
|
||||
private fun coverBitmapFromImageLoader(context: Context, memoryCacheKey: MemoryCache.Key): Bitmap? {
|
||||
return context.imageLoader.memoryCache[memoryCacheKey]
|
||||
return context.imageLoader.memoryCache?.get(memoryCacheKey)?.bitmap
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -19,7 +19,7 @@ import eu.kanade.tachiyomi.source.online.HttpSource
|
||||
import eu.kanade.tachiyomi.ui.base.controller.getMainAppBarHeight
|
||||
import eu.kanade.tachiyomi.ui.manga.MangaController
|
||||
import eu.kanade.tachiyomi.util.system.copyToClipboard
|
||||
import eu.kanade.tachiyomi.util.view.loadAnyAutoPause
|
||||
import eu.kanade.tachiyomi.util.view.loadAutoPause
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import reactivecircus.flowbinding.android.view.clicks
|
||||
@@ -286,8 +286,8 @@ class MangaInfoHeaderAdapter(
|
||||
setFavoriteButtonState(manga.favorite)
|
||||
|
||||
// Set cover if changed.
|
||||
binding.backdrop.loadAnyAutoPause(manga)
|
||||
binding.mangaCover.loadAnyAutoPause(manga)
|
||||
binding.backdrop.loadAutoPause(manga)
|
||||
binding.mangaCover.loadAutoPause(manga)
|
||||
|
||||
// Manga info section
|
||||
binding.mangaSummarySection.setTags(manga.getGenres(), controller::performGenreSearch)
|
||||
|
||||
@@ -2,8 +2,8 @@ package eu.kanade.tachiyomi.ui.manga.track
|
||||
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import coil.clear
|
||||
import coil.loadAny
|
||||
import coil.dispose
|
||||
import coil.load
|
||||
import eu.kanade.tachiyomi.data.track.model.TrackSearch
|
||||
import eu.kanade.tachiyomi.databinding.TrackSearchItemBinding
|
||||
import java.util.Locale
|
||||
@@ -20,9 +20,9 @@ class TrackSearchHolder(
|
||||
}
|
||||
|
||||
binding.trackSearchTitle.text = track.title
|
||||
binding.trackSearchCover.clear()
|
||||
binding.trackSearchCover.dispose()
|
||||
if (track.cover_url.isNotEmpty()) {
|
||||
binding.trackSearchCover.loadAny(track.cover_url)
|
||||
binding.trackSearchCover.load(track.cover_url)
|
||||
}
|
||||
|
||||
val hasStatus = track.publishing_status.isNotBlank()
|
||||
|
||||
@@ -17,7 +17,7 @@ import androidx.annotation.CallSuper
|
||||
import androidx.annotation.StyleRes
|
||||
import androidx.appcompat.widget.AppCompatImageView
|
||||
import androidx.core.view.isVisible
|
||||
import coil.clear
|
||||
import coil.dispose
|
||||
import coil.imageLoader
|
||||
import coil.request.CachePolicy
|
||||
import coil.request.ImageRequest
|
||||
@@ -152,7 +152,7 @@ open class ReaderPageImageView @JvmOverloads constructor(
|
||||
fun recycle() = pageView?.let {
|
||||
when (it) {
|
||||
is SubsamplingScaleImageView -> it.recycle()
|
||||
is AppCompatImageView -> it.clear()
|
||||
is AppCompatImageView -> it.dispose()
|
||||
}
|
||||
it.isVisible = false
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package eu.kanade.tachiyomi.ui.recent.history
|
||||
|
||||
import android.view.View
|
||||
import coil.clear
|
||||
import coil.loadAny
|
||||
import coil.dispose
|
||||
import coil.load
|
||||
import eu.davidea.viewholders.FlexibleViewHolder
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.models.MangaChapterHistory
|
||||
@@ -65,7 +65,7 @@ class HistoryHolder(
|
||||
}
|
||||
|
||||
// Set cover
|
||||
binding.cover.clear()
|
||||
binding.cover.loadAny(item.manga)
|
||||
binding.cover.dispose()
|
||||
binding.cover.load(item.manga)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@ package eu.kanade.tachiyomi.ui.recent.updates
|
||||
|
||||
import android.view.View
|
||||
import androidx.core.view.isVisible
|
||||
import coil.clear
|
||||
import coil.loadAny
|
||||
import coil.dispose
|
||||
import coil.load
|
||||
import eu.kanade.tachiyomi.databinding.UpdatesItemBinding
|
||||
import eu.kanade.tachiyomi.source.LocalSource
|
||||
import eu.kanade.tachiyomi.ui.manga.chapter.base.BaseChapterHolder
|
||||
@@ -58,7 +58,7 @@ class UpdatesHolder(private val view: View, private val adapter: UpdatesAdapter)
|
||||
binding.download.setState(item.status, item.progress)
|
||||
|
||||
// Set cover
|
||||
binding.mangaCover.clear()
|
||||
binding.mangaCover.loadAny(item.manga)
|
||||
binding.mangaCover.dispose()
|
||||
binding.mangaCover.load(item.manga)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user