From a3332d8f06f9f383603de72e45d145d7a86f4aae Mon Sep 17 00:00:00 2001 From: vfsfitvnm Date: Sun, 19 Jun 2022 11:28:44 +0200 Subject: [PATCH] Show a better error in InterUriScreen --- .../it/vfsfitvnm/vimusic/ui/screens/IntentUriScreen.kt | 2 +- .../main/kotlin/it/vfsfitvnm/youtubemusic/Outcome.kt | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/IntentUriScreen.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/IntentUriScreen.kt index de3ea1e..69ab0e8 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/IntentUriScreen.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/IntentUriScreen.kt @@ -87,7 +87,7 @@ fun IntentUriScreen(uri: Uri) { } } ?: uri.getQueryParameter("v")?.let { videoId -> YouTube.song(videoId).toNullable()?.map { listOf(it) } - } ?: Outcome.Error.Network + } ?: Outcome.Error.Unhandled(Error("Missing URL parameters")) } } diff --git a/youtube-music/src/main/kotlin/it/vfsfitvnm/youtubemusic/Outcome.kt b/youtube-music/src/main/kotlin/it/vfsfitvnm/youtubemusic/Outcome.kt index 735beca..ec515a9 100644 --- a/youtube-music/src/main/kotlin/it/vfsfitvnm/youtubemusic/Outcome.kt +++ b/youtube-music/src/main/kotlin/it/vfsfitvnm/youtubemusic/Outcome.kt @@ -57,9 +57,13 @@ fun Outcome?.toNotNull(): Outcome { } } -fun Outcome.toNullable(): Outcome? { - return valueOrNull?.let { - Outcome.Success(it) +fun Outcome.toNullable(error: Outcome.Error? = null): Outcome? { + return when (this) { + is Outcome.Success -> value?.let { Outcome.Success(it) } ?: error + is Outcome.Recovered -> value?.let { Outcome.Success(it) } ?: error + is Outcome.Initial -> this + is Outcome.Loading -> this + is Outcome.Error -> this } }