From 0f4414e359d3c1f349a3cf6bb00a071dd4b1f867 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Thu, 22 Jul 2021 19:29:47 -0400 Subject: [PATCH] Fix crash if you somehow have a invalid saved search json --- .../kanade/tachiyomi/data/backup/full/FullBackupManager.kt | 6 +++++- .../ui/browse/source/browse/BrowseSourcePresenter.kt | 6 +++++- .../tachiyomi/ui/browse/source/index/IndexPresenter.kt | 6 +++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupManager.kt index bea236aac..fdfb8eea0 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupManager.kt @@ -416,7 +416,11 @@ class FullBackupManager(context: Context) : AbstractBackupManager(context) { internal fun restoreSavedSearches(backupSavedSearches: List) { val currentSavedSearches = preferences.savedSearches().get().mapNotNull { val sourceId = it.substringBefore(':').toLongOrNull() ?: return@mapNotNull null - val content = Json.decodeFromString(it.substringAfter(':')) + val content = try { + Json.decodeFromString(it.substringAfter(':')) + } catch (e: Exception) { + return@mapNotNull null + } BackupSavedSearch( content.name, content.query, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourcePresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourcePresenter.kt index 72716ff09..432f218c4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourcePresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourcePresenter.kt @@ -469,7 +469,11 @@ open class BrowseSourcePresenter( return prefs.savedSearches().get().mapNotNull { val id = it.substringBefore(':').toLongOrNull() ?: return@mapNotNull null if (id != source.id) return@mapNotNull null - val content = Json.decodeFromString(it.substringAfter(':')) + val content = try { + Json.decodeFromString(it.substringAfter(':')) + } catch (e: Exception) { + return@mapNotNull null + } try { val originalFilters = source.getFilterList() filterSerializer.deserialize(originalFilters, content.filters) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/index/IndexPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/index/IndexPresenter.kt index 20236fd1a..cb3769177 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/index/IndexPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/index/IndexPresenter.kt @@ -217,7 +217,11 @@ open class IndexPresenter( return preferences.savedSearches().get().mapNotNull { val id = it.substringBefore(':').toLongOrNull() ?: return@mapNotNull null if (id != source.id) return@mapNotNull null - val content = Json.decodeFromString(it.substringAfter(':')) + val content = try { + Json.decodeFromString(it.substringAfter(':')) + } catch (e: Exception) { + return@mapNotNull null + } try { val originalFilters = source.getFilterList() filterSerializer.deserialize(originalFilters, content.filters)