Consolidate exception message formatting
Closes #9408 (cherry picked from commit c9805b8612cbcba9c2b017ff67333c6c08ea32ba) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
This commit is contained in:
parent
ccdaeada29
commit
35abcf89e5
@ -22,12 +22,12 @@ import eu.kanade.presentation.browse.components.BrowseSourceCompactGrid
|
|||||||
import eu.kanade.presentation.browse.components.BrowseSourceEHentaiList
|
import eu.kanade.presentation.browse.components.BrowseSourceEHentaiList
|
||||||
import eu.kanade.presentation.browse.components.BrowseSourceList
|
import eu.kanade.presentation.browse.components.BrowseSourceList
|
||||||
import eu.kanade.presentation.components.AppBar
|
import eu.kanade.presentation.components.AppBar
|
||||||
|
import eu.kanade.presentation.util.formattedMessage
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.source.Source
|
import eu.kanade.tachiyomi.source.Source
|
||||||
import exh.metadata.metadata.base.RaisedSearchMetadata
|
import exh.metadata.metadata.base.RaisedSearchMetadata
|
||||||
import exh.source.isEhBasedSource
|
import exh.source.isEhBasedSource
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
import tachiyomi.data.source.NoResultsException
|
|
||||||
import tachiyomi.domain.library.model.LibraryDisplayMode
|
import tachiyomi.domain.library.model.LibraryDisplayMode
|
||||||
import tachiyomi.domain.manga.model.Manga
|
import tachiyomi.domain.manga.model.Manga
|
||||||
import tachiyomi.domain.source.model.StubSource
|
import tachiyomi.domain.source.model.StubSource
|
||||||
@ -62,12 +62,7 @@ fun BrowseSourceContent(
|
|||||||
?: mangaList.loadState.append.takeIf { it is LoadState.Error }
|
?: mangaList.loadState.append.takeIf { it is LoadState.Error }
|
||||||
|
|
||||||
val getErrorMessage: (LoadState.Error) -> String = { state ->
|
val getErrorMessage: (LoadState.Error) -> String = { state ->
|
||||||
when {
|
with(context) { state.error.formattedMessage }
|
||||||
state.error is NoResultsException -> context.getString(R.string.no_results_found)
|
|
||||||
state.error.message.isNullOrEmpty() -> ""
|
|
||||||
state.error.message.orEmpty().startsWith("HTTP error") -> "${state.error.message}: ${context.getString(R.string.http_error_hint)}"
|
|
||||||
else -> state.error.message.orEmpty()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LaunchedEffect(errorState) {
|
LaunchedEffect(errorState) {
|
||||||
|
@ -0,0 +1,19 @@
|
|||||||
|
package eu.kanade.presentation.util
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import eu.kanade.tachiyomi.R
|
||||||
|
import eu.kanade.tachiyomi.network.HttpException
|
||||||
|
import tachiyomi.data.source.NoResultsException
|
||||||
|
import tachiyomi.domain.source.model.SourceNotInstalledException
|
||||||
|
import java.io.IOException
|
||||||
|
|
||||||
|
context(Context)
|
||||||
|
val Throwable.formattedMessage: String
|
||||||
|
get() = when {
|
||||||
|
this is NoResultsException -> getString(R.string.no_results_found)
|
||||||
|
this is SourceNotInstalledException -> getString(R.string.loader_not_implemented_error)
|
||||||
|
this is HttpException -> "$message: ${getString(R.string.http_error_hint)}"
|
||||||
|
this is IOException || this is Exception -> message ?: this::class.simpleName.orEmpty()
|
||||||
|
this::class.simpleName != null -> "${this::class.simpleName}: $message"
|
||||||
|
else -> message.orEmpty()
|
||||||
|
}
|
@ -23,6 +23,7 @@ import eu.kanade.domain.track.model.toDomainTrack
|
|||||||
import eu.kanade.domain.ui.UiPreferences
|
import eu.kanade.domain.ui.UiPreferences
|
||||||
import eu.kanade.presentation.manga.DownloadAction
|
import eu.kanade.presentation.manga.DownloadAction
|
||||||
import eu.kanade.presentation.manga.components.ChapterDownloadAction
|
import eu.kanade.presentation.manga.components.ChapterDownloadAction
|
||||||
|
import eu.kanade.presentation.util.formattedMessage
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.download.DownloadCache
|
import eu.kanade.tachiyomi.data.download.DownloadCache
|
||||||
import eu.kanade.tachiyomi.data.download.DownloadManager
|
import eu.kanade.tachiyomi.data.download.DownloadManager
|
||||||
@ -404,7 +405,7 @@ class MangaInfoScreenModel(
|
|||||||
|
|
||||||
logcat(LogPriority.ERROR, e)
|
logcat(LogPriority.ERROR, e)
|
||||||
coroutineScope.launch {
|
coroutineScope.launch {
|
||||||
snackbarHostState.showSnackbar(message = e.snackbarMessage)
|
snackbarHostState.showSnackbar(message = with(context) { e.formattedMessage })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -992,7 +993,7 @@ class MangaInfoScreenModel(
|
|||||||
context.getString(R.string.no_chapters_error)
|
context.getString(R.string.no_chapters_error)
|
||||||
} else {
|
} else {
|
||||||
logcat(LogPriority.ERROR, e)
|
logcat(LogPriority.ERROR, e)
|
||||||
e.snackbarMessage
|
with(context) { e.formattedMessage }
|
||||||
}
|
}
|
||||||
|
|
||||||
coroutineScope.launch {
|
coroutineScope.launch {
|
||||||
@ -1536,14 +1537,6 @@ class MangaInfoScreenModel(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val Throwable.snackbarMessage: String
|
|
||||||
get() = when (val className = this::class.simpleName) {
|
|
||||||
null -> message ?: ""
|
|
||||||
"SourceNotInstalledException" -> context.getString(R.string.loader_not_implemented_error)
|
|
||||||
"Exception", "HttpException", "IOException" -> message ?: className
|
|
||||||
else -> "$className: $message"
|
|
||||||
}
|
|
||||||
|
|
||||||
// SY -->
|
// SY -->
|
||||||
fun showEditMangaInfoDialog() {
|
fun showEditMangaInfoDialog() {
|
||||||
mutableState.update { state ->
|
mutableState.update { state ->
|
||||||
|
Loading…
x
Reference in New Issue
Block a user