From a5c31329160ebb580f5079c7cc126a32ad6fcda9 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Sat, 21 Jan 2023 11:24:25 +0100 Subject: [PATCH] Fix the notification thumbnail vanishing --- .../libretube/util/NowPlayingNotification.kt | 41 +++++++++++-------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/github/libretube/util/NowPlayingNotification.kt b/app/src/main/java/com/github/libretube/util/NowPlayingNotification.kt index 286c3d084..ae00b2bfc 100644 --- a/app/src/main/java/com/github/libretube/util/NowPlayingNotification.kt +++ b/app/src/main/java/com/github/libretube/util/NowPlayingNotification.kt @@ -38,6 +38,7 @@ class NowPlayingNotification( ) { private var videoId: String? = null private var streams: Streams? = null + private var bitmap: Bitmap? = null /** * The [MediaSessionCompat] for the [streams]. @@ -105,24 +106,7 @@ class NowPlayingNotification( ): Bitmap? { if (DataSaverMode.isEnabled(context)) return null - var bitmap: Bitmap? = null - - val request = ImageRequest.Builder(context) - .data(streams?.thumbnailUrl) - .target { result -> - val bm = (result as BitmapDrawable).bitmap - // returns the bitmap on Android 13+, for everything below scaled down to a square - bitmap = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) { - ImageHelper.getSquareBitmap(bm) - } else { - bm - } - callback.onBitmap(bitmap!!) - } - .build() - - // enqueue the thumbnail loading request - ImageHelper.imageLoader.enqueue(request) + if (bitmap == null) enqueueThumbnailRequest(callback) return bitmap } @@ -132,6 +116,25 @@ class NowPlayingNotification( } } + private fun enqueueThumbnailRequest(callback: PlayerNotificationManager.BitmapCallback) { + val request = ImageRequest.Builder(context) + .data(streams?.thumbnailUrl) + .target { result -> + val bm = (result as BitmapDrawable).bitmap + // returns the bitmap on Android 13+, for everything below scaled down to a square + bitmap = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) { + ImageHelper.getSquareBitmap(bm) + } else { + bm + } + callback.onBitmap(bitmap!!) + } + .build() + + // enqueue the thumbnail loading request + ImageHelper.imageLoader.enqueue(request) + } + private val customActionReceiver = object : CustomActionReceiver { override fun createCustomActions( context: Context, @@ -257,6 +260,8 @@ class NowPlayingNotification( ) { this.videoId = videoId this.streams = streams + // reset the thumbnail bitmap in order to become reloaded for the new video + this.bitmap = null if (playerNotification == null) { createMediaSession()