Marc Reichelt
06/08/2020, 9:50 PMZach Klippenstein (he/him) [MOD]
06/08/2020, 9:53 PMKlaas Kabini
06/09/2020, 7:59 AM@Composable
fun loadImageFromUrl(url: String): ImageAsset? {
val activity = context as ComposeActivity
if (url.isEmpty()) {
return null
}
return with(ViewModelProvider(activity).get(BitmapRequestorViewModel::class.java)) {
val observableBitmapState = fetchBitmapFromUrl(url).observeAsState()
observableBitmapState.value?.asImageAsset()
}
}
internal class BitmapRequestorViewModel : ViewModel() {
fun fetchBitmapFromUrl(url: String) = liveData {
val picasso = Picasso.get()
picasso.fetchBitmap(url)?.let {
emit(it)
}
}
}
suspend fun Picasso.fetchBitmap(url: String): Bitmap? =
withContext(<http://Dispatchers.IO|Dispatchers.IO>) { load(url).get() }
Marc Reichelt
06/09/2020, 8:57 AM