Fix crash if you somehow have a invalid saved search json

This commit is contained in:
Jobobby04 2021-07-22 19:29:47 -04:00
parent b769043f36
commit 0f4414e359
3 changed files with 15 additions and 3 deletions

View File

@ -416,7 +416,11 @@ class FullBackupManager(context: Context) : AbstractBackupManager(context) {
internal fun restoreSavedSearches(backupSavedSearches: List<BackupSavedSearch>) { internal fun restoreSavedSearches(backupSavedSearches: List<BackupSavedSearch>) {
val currentSavedSearches = preferences.savedSearches().get().mapNotNull { val currentSavedSearches = preferences.savedSearches().get().mapNotNull {
val sourceId = it.substringBefore(':').toLongOrNull() ?: return@mapNotNull null val sourceId = it.substringBefore(':').toLongOrNull() ?: return@mapNotNull null
val content = Json.decodeFromString<JsonSavedSearch>(it.substringAfter(':')) val content = try {
Json.decodeFromString<JsonSavedSearch>(it.substringAfter(':'))
} catch (e: Exception) {
return@mapNotNull null
}
BackupSavedSearch( BackupSavedSearch(
content.name, content.name,
content.query, content.query,

View File

@ -469,7 +469,11 @@ open class BrowseSourcePresenter(
return prefs.savedSearches().get().mapNotNull { return prefs.savedSearches().get().mapNotNull {
val id = it.substringBefore(':').toLongOrNull() ?: return@mapNotNull null val id = it.substringBefore(':').toLongOrNull() ?: return@mapNotNull null
if (id != source.id) return@mapNotNull null if (id != source.id) return@mapNotNull null
val content = Json.decodeFromString<JsonSavedSearch>(it.substringAfter(':')) val content = try {
Json.decodeFromString<JsonSavedSearch>(it.substringAfter(':'))
} catch (e: Exception) {
return@mapNotNull null
}
try { try {
val originalFilters = source.getFilterList() val originalFilters = source.getFilterList()
filterSerializer.deserialize(originalFilters, content.filters) filterSerializer.deserialize(originalFilters, content.filters)

View File

@ -217,7 +217,11 @@ open class IndexPresenter(
return preferences.savedSearches().get().mapNotNull { return preferences.savedSearches().get().mapNotNull {
val id = it.substringBefore(':').toLongOrNull() ?: return@mapNotNull null val id = it.substringBefore(':').toLongOrNull() ?: return@mapNotNull null
if (id != source.id) return@mapNotNull null if (id != source.id) return@mapNotNull null
val content = Json.decodeFromString<JsonSavedSearch>(it.substringAfter(':')) val content = try {
Json.decodeFromString<JsonSavedSearch>(it.substringAfter(':'))
} catch (e: Exception) {
return@mapNotNull null
}
try { try {
val originalFilters = source.getFilterList() val originalFilters = source.getFilterList()
filterSerializer.deserialize(originalFilters, content.filters) filterSerializer.deserialize(originalFilters, content.filters)