Skip to content

Commit 03924c1

Browse files
committed
Fixed crash when trying to TTS play a missing file
1 parent 2bdade9 commit 03924c1

File tree

1 file changed

+28
-7
lines changed

1 file changed

+28
-7
lines changed

app/src/main/java/com/nononsenseapps/feeder/ui/compose/feedarticle/FeedArticleViewModel.kt

+28-7
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ import com.nononsenseapps.feeder.ui.compose.feed.FeedListItem
3838
import com.nononsenseapps.feeder.ui.compose.feed.FeedOrTag
3939
import com.nononsenseapps.feeder.ui.compose.navdrawer.DrawerItemWithUnreadCount
4040
import com.nononsenseapps.feeder.ui.compose.text.htmlToAnnotatedString
41+
import com.nononsenseapps.feeder.util.Either
4142
import com.nononsenseapps.feeder.util.FilePathProvider
43+
import java.io.FileNotFoundException
4244
import java.time.Instant
4345
import java.time.ZonedDateTime
4446
import java.util.Locale
@@ -396,7 +398,14 @@ class FeedArticleViewModel(
396398
fun ttsPlay() {
397399
viewModelScope.launch(Dispatchers.IO) {
398400
val fullText = when (viewState.value.textToDisplay) {
399-
TextToDisplay.DEFAULT -> {
401+
TextToDisplay.DEFAULT -> Either.catching(
402+
onCatch = {
403+
when (it) {
404+
is FileNotFoundException -> TTSFileNotFound
405+
else -> TTSUnknownError
406+
}
407+
},
408+
) {
400409
blobInputStream(viewState.value.articleId, filePathProvider.articleDir).use {
401410
htmlToAnnotatedString(
402411
inputStream = it,
@@ -405,7 +414,14 @@ class FeedArticleViewModel(
405414
}
406415
}
407416

408-
TextToDisplay.FULLTEXT -> {
417+
TextToDisplay.FULLTEXT -> Either.catching(
418+
onCatch = {
419+
when (it) {
420+
is FileNotFoundException -> TTSFileNotFound
421+
else -> TTSUnknownError
422+
}
423+
},
424+
) {
409425
blobFullInputStream(
410426
viewState.value.articleId,
411427
filePathProvider.fullArticleDir,
@@ -422,14 +438,13 @@ class FeedArticleViewModel(
422438
TextToDisplay.FAILED_MISSING_BODY,
423439
TextToDisplay.FAILED_MISSING_LINK,
424440
TextToDisplay.FAILED_NOT_HTML,
425-
-> null
441+
-> Either.Left(TTSUnknownError)
426442
}
427443

428-
if (fullText == null) {
429-
// TODO show error some message
430-
} else {
444+
// TODO show error some message
445+
fullText.onRight {
431446
ttsStateHolder.tts(
432-
textArray = fullText,
447+
textArray = it,
433448
useDetectLanguage = viewState.value.useDetectLanguage,
434449
)
435450
}
@@ -583,3 +598,9 @@ data class FeedArticleScreenViewState(
583598
override val filter: FeedListFilter = emptyFeedListFilter,
584599
val isArticleOpen: Boolean = false,
585600
) : FeedScreenViewState, ArticleScreenViewState
601+
602+
sealed class TSSError
603+
604+
object TTSFileNotFound : TSSError()
605+
606+
object TTSUnknownError : TSSError()

0 commit comments

Comments
 (0)