Merge pull request #28 from Iamlooker/migrate-to-coil

Migrate to coil
This commit is contained in:
LooKeR 2021-10-13 09:35:24 +05:30 committed by GitHub
commit 3b0625c066
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 32 additions and 28 deletions

View File

@ -119,7 +119,7 @@ dependencies {
implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.2'
implementation 'io.reactivex.rxjava3:rxjava:3.1.1'
implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.fasterxml.jackson.core:jackson-core:2.13.0'
implementation 'io.coil-kt:coil:1.4.0'
implementation 'com.github.topjohnwu.libsu:core:3.1.2'
}

View File

@ -5,24 +5,24 @@ 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.network.PicassoDownloader
import com.looker.droidify.service.Connection
import com.looker.droidify.service.SyncService
import com.looker.droidify.utility.Utils.toInstalledItem
import com.looker.droidify.utility.extension.android.Android
import com.squareup.picasso.OkHttp3Downloader
import com.squareup.picasso.Picasso
import java.net.InetSocketAddress
import java.net.Proxy
@Suppress("unused")
class MainApplication : Application() {
class MainApplication : Application(), ImageLoaderFactory {
override fun onCreate() {
super.onCreate()
@ -34,12 +34,6 @@ class MainApplication : Application() {
listenApplications()
listenPreferences()
Picasso.setSingletonInstance(
Picasso.Builder(this)
.downloader(OkHttp3Downloader(PicassoDownloader.Factory(Cache.getImagesDir(this))))
.build()
)
if (databaseUpdated) {
forceSyncAll()
}
@ -181,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,7 +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.PicassoDownloader
import com.looker.droidify.network.CoilDownloader
import com.looker.droidify.utility.KParcelable
import com.looker.droidify.utility.PackageItemResolver
import com.looker.droidify.utility.Utils
@ -1119,7 +1119,7 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
if (updateAll) {
if (item.product.icon.isNotEmpty() || item.product.metadataIcon.isNotEmpty()) {
holder.icon.load(
PicassoDownloader.createIconUri(
CoilDownloader.createIconUri(
holder.icon, item.product.packageName,
item.product.icon, item.product.metadataIcon, item.repository
)
@ -1322,7 +1322,7 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
val inner = context.resources.sizeScaled(GRID_SPACING_INNER_DP)
val cellSize = (screenWidth - 2 * outer - (columns - 1) * inner) / columns
holder.image.load(
PicassoDownloader.createScreenshotUri(
CoilDownloader.createScreenshotUri(
item.repository,
item.packageName,
item.screenshot
@ -1330,8 +1330,7 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
) {
placeholder(holder.placeholder)
error(holder.placeholder)
resize(cellSize, cellSize)
centerCrop()
size(cellSize)
}
}
ViewType.RELEASE -> {

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,7 +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.PicassoDownloader
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.*
@ -256,7 +256,7 @@ class ScreenshotsFragment() : DialogFragment() {
if (width > 0 && height > 0) {
repository?.let {
holder.image.load(
PicassoDownloader.createScreenshotUri(
CoilDownloader.createScreenshotUri(
it,
packageName,
screenshot
@ -264,8 +264,7 @@ class ScreenshotsFragment() : DialogFragment() {
) {
placeholder(holder.placeholder)
error(holder.placeholder)
resize(width, height)
centerInside()
size(width, height)
}
}
} else {

View File

@ -17,9 +17,10 @@ import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.core.content.ContextCompat
import coil.load
import coil.request.ImageRequest
import coil.util.CoilUtils
import com.looker.droidify.utility.extension.android.Android
import com.squareup.picasso.Picasso
import com.squareup.picasso.RequestCreator
import org.xmlpull.v1.XmlPullParser
import kotlin.math.roundToInt
@ -91,10 +92,14 @@ fun ViewGroup.inflate(layoutResId: Int): View {
return LayoutInflater.from(context).inflate(layoutResId, this, false)
}
fun ImageView.load(uri: Uri, builder: RequestCreator.() -> Unit) {
Picasso.get().load(uri).noFade().apply(builder).into(this)
fun ImageView.load(uri: String, builder: ImageRequest.Builder.() -> Unit = {}) {
this.load(uri = uri, builder = builder)
}
fun ImageView.load(uri: Uri, builder: ImageRequest.Builder.() -> Unit = {}) {
this.load(uri = uri, builder = builder)
}
fun ImageView.clear() {
Picasso.get().cancelRequest(this)
CoilUtils.clear(this)
}