mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-29 00:10:32 +05:30
refactor: use Coil exclusively for image loading
This commit is contained in:
parent
9030a6e871
commit
db0dc4c4fc
@ -2,10 +2,9 @@ package com.github.libretube.helpers
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.BitmapFactory
|
||||
import android.graphics.Color
|
||||
import android.net.Uri
|
||||
import android.widget.ImageView
|
||||
import androidx.core.graphics.drawable.toBitmap
|
||||
import androidx.core.graphics.drawable.toBitmapOrNull
|
||||
import coil.ImageLoader
|
||||
import coil.disk.DiskCache
|
||||
@ -15,7 +14,6 @@ import com.github.libretube.BuildConfig
|
||||
import com.github.libretube.api.CronetHelper
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.extensions.toAndroidUri
|
||||
import com.github.libretube.extensions.toAndroidUriOrNull
|
||||
import com.github.libretube.util.DataSaverMode
|
||||
import com.google.net.cronet.okhttptransport.CronetInterceptor
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@ -26,7 +24,7 @@ import java.io.File
|
||||
import java.nio.file.Path
|
||||
|
||||
object ImageHelper {
|
||||
lateinit var imageLoader: ImageLoader
|
||||
private lateinit var imageLoader: ImageLoader
|
||||
|
||||
private val Context.coilFile get() = cacheDir.resolve("coil")
|
||||
|
||||
@ -119,14 +117,15 @@ object ImageHelper {
|
||||
return imageLoader.execute(request).drawable?.toBitmapOrNull()
|
||||
}
|
||||
|
||||
fun getDownloadedImage(context: Context, path: Path): Bitmap? {
|
||||
return path.toAndroidUriOrNull()?.let { getImage(context, it) }
|
||||
fun getImageWithCallback(context: Context, url: String?, onBitmap: (Bitmap) -> Unit) {
|
||||
val request = ImageRequest.Builder(context)
|
||||
.data(url)
|
||||
.target { drawable ->
|
||||
onBitmap(drawable.toBitmap())
|
||||
}
|
||||
.build()
|
||||
|
||||
private fun getImage(context: Context, imagePath: Uri): Bitmap? {
|
||||
return context.contentResolver.openInputStream(imagePath)?.use {
|
||||
BitmapFactory.decodeStream(it)
|
||||
}
|
||||
imageLoader.enqueue(request)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -82,7 +82,7 @@ class DownloadsAdapter(
|
||||
}
|
||||
|
||||
download.thumbnailPath?.let { path ->
|
||||
thumbnailImage.setImageBitmap(ImageHelper.getDownloadedImage(context, path))
|
||||
ImageHelper.loadImage(path.toString(), thumbnailImage)
|
||||
}
|
||||
|
||||
progressBar.setOnClickListener {
|
||||
|
@ -96,26 +96,13 @@ class NowPlayingNotification(
|
||||
}
|
||||
|
||||
private fun enqueueThumbnailRequest(callback: (Bitmap) -> Unit) {
|
||||
// If playing a downloaded file, show the downloaded thumbnail instead of loading an
|
||||
// online image
|
||||
notificationData?.thumbnailPath?.let { path ->
|
||||
ImageHelper.getDownloadedImage(context, path)?.let {
|
||||
ImageHelper.getImageWithCallback(
|
||||
context,
|
||||
notificationData?.thumbnailPath?.toString() ?: notificationData?.thumbnailUrl
|
||||
) {
|
||||
notificationBitmap = processBitmap(it)
|
||||
callback.invoke(notificationBitmap!!)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
val request = ImageRequest.Builder(context)
|
||||
.data(notificationData?.thumbnailUrl)
|
||||
.target {
|
||||
notificationBitmap = processBitmap(it.toBitmap())
|
||||
callback.invoke(notificationBitmap!!)
|
||||
}
|
||||
.build()
|
||||
|
||||
// enqueue the thumbnail loading request
|
||||
ImageHelper.imageLoader.enqueue(request)
|
||||
}
|
||||
|
||||
private fun processBitmap(bitmap: Bitmap): Bitmap {
|
||||
@ -267,8 +254,18 @@ class NowPlayingNotification(
|
||||
|
||||
return PlaybackStateCompat.Builder()
|
||||
.setActions(stateActions)
|
||||
.addCustomAction(createMediaSessionAction(R.drawable.ic_rewind_md, PlayerEvent.Rewind.name))
|
||||
.addCustomAction(createMediaSessionAction(R.drawable.ic_forward_md, PlayerEvent.Forward.name))
|
||||
.addCustomAction(
|
||||
createMediaSessionAction(
|
||||
R.drawable.ic_rewind_md,
|
||||
PlayerEvent.Rewind.name
|
||||
)
|
||||
)
|
||||
.addCustomAction(
|
||||
createMediaSessionAction(
|
||||
R.drawable.ic_forward_md,
|
||||
PlayerEvent.Forward.name
|
||||
)
|
||||
)
|
||||
.setState(state, player.currentPosition, player.playbackParameters.speed)
|
||||
.build()
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user