Complete Migration to Coil

This commit is contained in:
LooKeR 2021-10-13 09:33:46 +05:30
parent d66f8ebee4
commit 34c67c66bb
5 changed files with 36 additions and 7 deletions

View File

@ -5,11 +5,14 @@ import android.app.Application
import android.app.job.JobInfo
import android.app.job.JobScheduler
import android.content.*
import coil.ImageLoader
import coil.ImageLoaderFactory
import com.looker.droidify.content.Cache
import com.looker.droidify.content.Preferences
import com.looker.droidify.content.ProductPreferences
import com.looker.droidify.database.Database
import com.looker.droidify.index.RepositoryUpdater
import com.looker.droidify.network.CoilDownloader
import com.looker.droidify.network.Downloader
import com.looker.droidify.service.Connection
import com.looker.droidify.service.SyncService
@ -19,7 +22,7 @@ import java.net.InetSocketAddress
import java.net.Proxy
@Suppress("unused")
class MainApplication : Application() {
class MainApplication : Application(), ImageLoaderFactory {
override fun onCreate() {
super.onCreate()
@ -172,4 +175,11 @@ class MainApplication : Application() {
@SuppressLint("UnsafeProtectedBroadcastReceiver")
override fun onReceive(context: Context, intent: Intent) = Unit
}
override fun newImageLoader(): ImageLoader {
return ImageLoader.Builder(this)
.callFactory(CoilDownloader.Factory(Cache.getImagesDir(this)))
.crossfade(true)
.build()
}
}

View File

@ -13,7 +13,7 @@ import java.io.File
import kotlin.math.min
import kotlin.math.roundToInt
object PicassoDownloader {
object CoilDownloader {
private const val HOST_ICON = "icon"
private const val HOST_SCREENSHOT = "screenshot"
private const val QUERY_ADDRESS = "address"

View File

@ -32,6 +32,7 @@ import com.looker.droidify.content.Preferences
import com.looker.droidify.content.ProductPreferences
import com.looker.droidify.entity.*
import com.looker.droidify.graphics.PaddingDrawable
import com.looker.droidify.network.CoilDownloader
import com.looker.droidify.utility.KParcelable
import com.looker.droidify.utility.PackageItemResolver
import com.looker.droidify.utility.Utils
@ -1117,7 +1118,12 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
val updateAll = !updateStatus
if (updateAll) {
if (item.product.icon.isNotEmpty() || item.product.metadataIcon.isNotEmpty()) {
holder.icon.load(item.product.icon) {
holder.icon.load(
CoilDownloader.createIconUri(
holder.icon, item.product.packageName,
item.product.icon, item.product.metadataIcon, item.repository
)
) {
placeholder(holder.progressIcon)
error(holder.defaultIcon)
}
@ -1315,7 +1321,13 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
val outer = context.resources.sizeScaled(GRID_SPACING_OUTER_DP)
val inner = context.resources.sizeScaled(GRID_SPACING_INNER_DP)
val cellSize = (screenWidth - 2 * outer - (columns - 1) * inner) / columns
holder.image.load(item.screenshot.path) {
holder.image.load(
CoilDownloader.createScreenshotUri(
item.repository,
item.packageName,
item.screenshot
)
) {
placeholder(holder.placeholder)
error(holder.placeholder)
size(cellSize)

View File

@ -15,7 +15,7 @@ import com.looker.droidify.R
import com.looker.droidify.database.Database
import com.looker.droidify.entity.ProductItem
import com.looker.droidify.entity.Repository
import com.looker.droidify.network.PicassoDownloader
import com.looker.droidify.network.CoilDownloader
import com.looker.droidify.utility.Utils
import com.looker.droidify.utility.extension.resources.*
import com.looker.droidify.utility.extension.text.nullIfEmpty
@ -138,7 +138,7 @@ class ProductsAdapter(private val onClick: (ProductItem) -> Unit) :
val repository: Repository? = repositories[productItem.repositoryId]
if ((productItem.icon.isNotEmpty() || productItem.metadataIcon.isNotEmpty()) && repository != null) {
holder.icon.load(
PicassoDownloader.createIconUri(
CoilDownloader.createIconUri(
holder.icon, productItem.packageName,
productItem.icon, productItem.metadataIcon, repository
)

View File

@ -22,6 +22,7 @@ import com.looker.droidify.database.Database
import com.looker.droidify.entity.Product
import com.looker.droidify.entity.Repository
import com.looker.droidify.graphics.PaddingDrawable
import com.looker.droidify.network.CoilDownloader
import com.looker.droidify.utility.RxUtils
import com.looker.droidify.utility.extension.android.Android
import com.looker.droidify.utility.extension.resources.*
@ -254,7 +255,13 @@ class ScreenshotsFragment() : DialogFragment() {
val (width, height) = size
if (width > 0 && height > 0) {
repository?.let {
holder.image.load(screenshot.path) {
holder.image.load(
CoilDownloader.createScreenshotUri(
it,
packageName,
screenshot
)
) {
placeholder(holder.placeholder)
error(holder.placeholder)
size(width, height)