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.JobInfo
import android.app.job.JobScheduler import android.app.job.JobScheduler
import android.content.* import android.content.*
import coil.ImageLoader
import coil.ImageLoaderFactory
import com.looker.droidify.content.Cache import com.looker.droidify.content.Cache
import com.looker.droidify.content.Preferences import com.looker.droidify.content.Preferences
import com.looker.droidify.content.ProductPreferences import com.looker.droidify.content.ProductPreferences
import com.looker.droidify.database.Database import com.looker.droidify.database.Database
import com.looker.droidify.index.RepositoryUpdater import com.looker.droidify.index.RepositoryUpdater
import com.looker.droidify.network.CoilDownloader
import com.looker.droidify.network.Downloader import com.looker.droidify.network.Downloader
import com.looker.droidify.service.Connection import com.looker.droidify.service.Connection
import com.looker.droidify.service.SyncService import com.looker.droidify.service.SyncService
@ -19,7 +22,7 @@ import java.net.InetSocketAddress
import java.net.Proxy import java.net.Proxy
@Suppress("unused") @Suppress("unused")
class MainApplication : Application() { class MainApplication : Application(), ImageLoaderFactory {
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
@ -172,4 +175,11 @@ class MainApplication : Application() {
@SuppressLint("UnsafeProtectedBroadcastReceiver") @SuppressLint("UnsafeProtectedBroadcastReceiver")
override fun onReceive(context: Context, intent: Intent) = Unit 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.min
import kotlin.math.roundToInt import kotlin.math.roundToInt
object PicassoDownloader { object CoilDownloader {
private const val HOST_ICON = "icon" private const val HOST_ICON = "icon"
private const val HOST_SCREENSHOT = "screenshot" private const val HOST_SCREENSHOT = "screenshot"
private const val QUERY_ADDRESS = "address" 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.content.ProductPreferences
import com.looker.droidify.entity.* import com.looker.droidify.entity.*
import com.looker.droidify.graphics.PaddingDrawable import com.looker.droidify.graphics.PaddingDrawable
import com.looker.droidify.network.CoilDownloader
import com.looker.droidify.utility.KParcelable import com.looker.droidify.utility.KParcelable
import com.looker.droidify.utility.PackageItemResolver import com.looker.droidify.utility.PackageItemResolver
import com.looker.droidify.utility.Utils import com.looker.droidify.utility.Utils
@ -1117,7 +1118,12 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
val updateAll = !updateStatus val updateAll = !updateStatus
if (updateAll) { if (updateAll) {
if (item.product.icon.isNotEmpty() || item.product.metadataIcon.isNotEmpty()) { 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) placeholder(holder.progressIcon)
error(holder.defaultIcon) 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 outer = context.resources.sizeScaled(GRID_SPACING_OUTER_DP)
val inner = context.resources.sizeScaled(GRID_SPACING_INNER_DP) val inner = context.resources.sizeScaled(GRID_SPACING_INNER_DP)
val cellSize = (screenWidth - 2 * outer - (columns - 1) * inner) / columns 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) placeholder(holder.placeholder)
error(holder.placeholder) error(holder.placeholder)
size(cellSize) size(cellSize)

View File

@ -15,7 +15,7 @@ import com.looker.droidify.R
import com.looker.droidify.database.Database import com.looker.droidify.database.Database
import com.looker.droidify.entity.ProductItem import com.looker.droidify.entity.ProductItem
import com.looker.droidify.entity.Repository 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.Utils
import com.looker.droidify.utility.extension.resources.* import com.looker.droidify.utility.extension.resources.*
import com.looker.droidify.utility.extension.text.nullIfEmpty 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] val repository: Repository? = repositories[productItem.repositoryId]
if ((productItem.icon.isNotEmpty() || productItem.metadataIcon.isNotEmpty()) && repository != null) { if ((productItem.icon.isNotEmpty() || productItem.metadataIcon.isNotEmpty()) && repository != null) {
holder.icon.load( holder.icon.load(
PicassoDownloader.createIconUri( CoilDownloader.createIconUri(
holder.icon, productItem.packageName, holder.icon, productItem.packageName,
productItem.icon, productItem.metadataIcon, repository 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.Product
import com.looker.droidify.entity.Repository import com.looker.droidify.entity.Repository
import com.looker.droidify.graphics.PaddingDrawable import com.looker.droidify.graphics.PaddingDrawable
import com.looker.droidify.network.CoilDownloader
import com.looker.droidify.utility.RxUtils import com.looker.droidify.utility.RxUtils
import com.looker.droidify.utility.extension.android.Android import com.looker.droidify.utility.extension.android.Android
import com.looker.droidify.utility.extension.resources.* import com.looker.droidify.utility.extension.resources.*
@ -254,7 +255,13 @@ class ScreenshotsFragment() : DialogFragment() {
val (width, height) = size val (width, height) = size
if (width > 0 && height > 0) { if (width > 0 && height > 0) {
repository?.let { repository?.let {
holder.image.load(screenshot.path) { holder.image.load(
CoilDownloader.createScreenshotUri(
it,
packageName,
screenshot
)
) {
placeholder(holder.placeholder) placeholder(holder.placeholder)
error(holder.placeholder) error(holder.placeholder)
size(width, height) size(width, height)