Migrate NotificationIcon to Picasso
This commit is contained in:
parent
a5b9fe4c35
commit
5a6d0455ec
3 changed files with 751 additions and 19 deletions
|
|
@ -3,35 +3,43 @@ package org.schabi.newpipe.local.feed.notifications
|
|||
import android.app.ActivityManager
|
||||
import android.content.Context
|
||||
import android.graphics.Bitmap
|
||||
import android.view.View
|
||||
import com.nostra13.universalimageloader.core.ImageLoader
|
||||
import com.nostra13.universalimageloader.core.assist.FailReason
|
||||
import com.nostra13.universalimageloader.core.assist.ImageSize
|
||||
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener
|
||||
import android.graphics.drawable.Drawable
|
||||
import com.squareup.picasso.Picasso
|
||||
import com.squareup.picasso.Target
|
||||
import io.reactivex.rxjava3.core.SingleEmitter
|
||||
import io.reactivex.rxjava3.core.SingleOnSubscribe
|
||||
import org.schabi.newpipe.util.PicassoHelper
|
||||
|
||||
internal class NotificationIcon(
|
||||
context: Context,
|
||||
private val url: String
|
||||
private val url: String,
|
||||
) : SingleOnSubscribe<Bitmap> {
|
||||
|
||||
private val size = getIconSize(context)
|
||||
|
||||
override fun subscribe(emitter: SingleEmitter<Bitmap>) {
|
||||
ImageLoader.getInstance().loadImage(
|
||||
url,
|
||||
ImageSize(size, size),
|
||||
object : SimpleImageLoadingListener() {
|
||||
override fun onLoadingFailed(imageUri: String?, view: View?, failReason: FailReason) {
|
||||
emitter.onError(failReason.cause)
|
||||
}
|
||||
val target = SingleEmitterTarget(emitter)
|
||||
PicassoHelper.loadThumbnail(url)
|
||||
.resize(size, size)
|
||||
.centerCrop()
|
||||
.into(target)
|
||||
emitter.setCancellable {
|
||||
PicassoHelper.cancelRequest(target)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onLoadingComplete(imageUri: String?, view: View?, loadedImage: Bitmap) {
|
||||
emitter.onSuccess(loadedImage)
|
||||
}
|
||||
private class SingleEmitterTarget(private val emitter: SingleEmitter<Bitmap>) : Target {
|
||||
override fun onBitmapLoaded(bitmap: Bitmap, from: Picasso.LoadedFrom?) {
|
||||
if (!emitter.isDisposed) {
|
||||
emitter.onSuccess(bitmap)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
override fun onBitmapFailed(e: Exception, errorDrawable: Drawable?) {
|
||||
emitter.tryOnError(e)
|
||||
}
|
||||
|
||||
override fun onPrepareLoad(placeHolderDrawable: Drawable?) = Unit
|
||||
}
|
||||
|
||||
private companion object {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package org.schabi.newpipe.util;
|
||||
|
||||
import static org.schabi.newpipe.extractor.utils.Utils.isBlank;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
|
|
@ -9,6 +11,7 @@ import com.squareup.picasso.LruCache;
|
|||
import com.squareup.picasso.OkHttp3Downloader;
|
||||
import com.squareup.picasso.Picasso;
|
||||
import com.squareup.picasso.RequestCreator;
|
||||
import com.squareup.picasso.Target;
|
||||
import com.squareup.picasso.Transformation;
|
||||
|
||||
import org.schabi.newpipe.R;
|
||||
|
|
@ -19,8 +22,6 @@ import java.util.concurrent.TimeUnit;
|
|||
|
||||
import okhttp3.OkHttpClient;
|
||||
|
||||
import static org.schabi.newpipe.extractor.utils.Utils.isBlank;
|
||||
|
||||
public final class PicassoHelper {
|
||||
public static final String PLAYER_THUMBNAIL_TAG = "PICASSO_PLAYER_THUMBNAIL_TAG";
|
||||
private static final String PLAYER_THUMBNAIL_TRANSFORMATION_KEY
|
||||
|
|
@ -78,6 +79,10 @@ public final class PicassoHelper {
|
|||
picassoInstance.cancelTag(tag);
|
||||
}
|
||||
|
||||
public static void cancelRequest(final Target target) {
|
||||
picassoInstance.cancelRequest(target);
|
||||
}
|
||||
|
||||
public static void setIndicatorsEnabled(final boolean enabled) {
|
||||
picassoInstance.setIndicatorsEnabled(enabled); // useful for debugging
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue