diff --git a/app/src/main/kotlin/com/github/gotify/CoilHandler.kt b/app/src/main/kotlin/com/github/gotify/CoilHandler.kt index 1f6fd7b..3530f7f 100644 --- a/app/src/main/kotlin/com/github/gotify/CoilHandler.kt +++ b/app/src/main/kotlin/com/github/gotify/CoilHandler.kt @@ -10,6 +10,7 @@ import coil.disk.DiskCache import coil.request.ImageRequest import com.github.gotify.api.CertUtils import com.github.gotify.client.model.Application +import kotlinx.coroutines.runBlocking import okhttp3.OkHttpClient import org.tinylog.kotlin.Logger import java.io.IOException @@ -31,14 +32,18 @@ internal class CoilHandler(private val context: Context, private val settings: S } @Throws(IOException::class) - suspend fun getImageFromUrl(url: String?): Bitmap { + fun getImageFromUrl(url: String?): Bitmap { val request = ImageRequest.Builder(context) .data(url) .build() - return (imageLoader.execute(request).drawable as BitmapDrawable).bitmap + val imageResult: Bitmap + runBlocking { + imageResult = (imageLoader.execute(request).drawable as BitmapDrawable).bitmap + } + return imageResult } - suspend fun getIcon(app: Application?): Bitmap { + fun getIcon(app: Application?): Bitmap { if (app == null) { return BitmapFactory.decodeResource(context.resources, R.drawable.gotify) } diff --git a/app/src/main/kotlin/com/github/gotify/service/WebSocketService.kt b/app/src/main/kotlin/com/github/gotify/service/WebSocketService.kt index 243ff36..787bd8a 100644 --- a/app/src/main/kotlin/com/github/gotify/service/WebSocketService.kt +++ b/app/src/main/kotlin/com/github/gotify/service/WebSocketService.kt @@ -36,7 +36,6 @@ import com.github.gotify.messages.IntentUrlDialogActivity import com.github.gotify.messages.MessagesActivity import com.github.gotify.CoilHandler import io.noties.markwon.Markwon -import kotlinx.coroutines.runBlocking import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.atomic.AtomicLong import org.tinylog.kotlin.Logger @@ -378,15 +377,11 @@ internal class WebSocketService : Service() { showNotificationGroup(channelId) } - val largeIcon = runBlocking { - coilHandler.getIcon(appIdToApp[appId]) - } - b.setAutoCancel(true) .setDefaults(Notification.DEFAULT_ALL) .setWhen(System.currentTimeMillis()) .setSmallIcon(R.drawable.ic_gotify) - .setLargeIcon(largeIcon) + .setLargeIcon(coilHandler.getIcon(appIdToApp[appId])) .setTicker("${getString(R.string.app_name)} - $title") .setGroup(NotificationSupport.Group.MESSAGES) .setContentTitle(title) @@ -413,12 +408,10 @@ internal class WebSocketService : Service() { if (notificationImageUrl != null) { try { - runBlocking { - b.setStyle( - NotificationCompat.BigPictureStyle() - .bigPicture(coilHandler.getImageFromUrl(notificationImageUrl)) - ) - } + b.setStyle( + NotificationCompat.BigPictureStyle() + .bigPicture(coilHandler.getImageFromUrl(notificationImageUrl)) + ) } catch (e: Exception) { Logger.error(e, "Error loading bigImageUrl") }