MediaResolver: exposes Result instead of Nullable

This commit is contained in:
ganfra 2023-04-26 16:13:09 +02:00
parent 9dcc3780ac
commit c920dfb97a
4 changed files with 25 additions and 10 deletions

View file

@ -26,16 +26,23 @@ import io.element.android.libraries.matrix.api.media.MediaResolver
import java.nio.ByteBuffer
internal class MediaFetcher(
private val mediaResolver: MediaResolver?,
private val mediaResolver: MediaResolver,
private val meta: MediaResolver.Meta,
private val options: Options,
private val imageLoader: ImageLoader
) : Fetcher {
override suspend fun fetch(): FetchResult? {
val byteArray = mediaResolver?.resolve(meta.url, meta.kind) ?: return null
val byteBuffer = ByteBuffer.wrap(byteArray)
return imageLoader.components.newFetcher(byteBuffer, options, imageLoader)?.first?.fetch()
return mediaResolver.resolve(meta.url, meta.kind)
.map { byteArray ->
ByteBuffer.wrap(byteArray)
}.map { byteBuffer ->
imageLoader.components.newFetcher(byteBuffer, options, imageLoader)?.first?.fetch()
}
.fold(
{ result -> result },
{ failure -> throw failure }
)
}
class MetaFactory(private val client: MatrixClient) :