Fix corrupt images crashing NextUpActivity

This commit is contained in:
Bill Thornton
2020-08-18 00:57:54 -04:00
parent f23e4bf765
commit 5865d9ca53

View File

@@ -1,7 +1,7 @@
package org.jellyfin.androidtv.playback.nextup
import android.graphics.Bitmap
import android.os.Bundle
import android.util.Log
import androidx.fragment.app.FragmentActivity
import androidx.leanback.app.BackgroundManager
import com.bumptech.glide.Glide
@@ -12,8 +12,7 @@ import kotlinx.coroutines.withContext
import org.jellyfin.androidtv.TvApp
import org.jellyfin.androidtv.util.apiclient.getItem
import org.jellyfin.apiclient.model.dto.ImageOptions
private const val LOG_TAG = "NextUpActivity"
import timber.log.Timber
class NextUpActivity : FragmentActivity() {
private lateinit var fragment: NextUpFragment
@@ -23,7 +22,7 @@ class NextUpActivity : FragmentActivity() {
val id = intent.getStringExtra("id")
if (id == null) {
Log.e(LOG_TAG, "No id found in bundle at onCreate().")
Timber.e("No id found in bundle at onCreate().")
finish()
return
}
@@ -36,7 +35,7 @@ class NextUpActivity : FragmentActivity() {
val data = loadItemData(id)
if (data == null) {
Log.e(LOG_TAG, "Unable to load data at onCreate().")
Timber.e("Unable to load data at onCreate().")
finish()
return@launch
}
@@ -50,6 +49,14 @@ class NextUpActivity : FragmentActivity() {
}
}
private fun safelyLoadBitmap(url: String): Bitmap? {
return try {
Glide.with(this@NextUpActivity).asBitmap().load(url).submit().get()
} catch (e: Exception) {
null
}
}
private suspend fun loadItemData(id: String) = withContext(Dispatchers.IO) {
val item = TvApp.getApplication().apiClient.getItem(id) ?: return@withContext null
@@ -67,9 +74,9 @@ class NextUpActivity : FragmentActivity() {
item.id,
title,
item.overview,
backdrop?.let { Glide.with(this@NextUpActivity).asBitmap().load(it).submit().get() },
thumbnail?.let { Glide.with(this@NextUpActivity).asBitmap().load(it).submit().get() },
logo?.let { Glide.with(this@NextUpActivity).asBitmap().load(it).submit().get() }
backdrop?.let { safelyLoadBitmap(it) },
thumbnail?.let { safelyLoadBitmap(it) },
logo?.let { safelyLoadBitmap(it) }
)
}
}