From c5393f3eaa5207130ae4999844331db5a783c3f0 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Fri, 4 Feb 2022 19:06:39 +0100 Subject: [PATCH] Allow searchable serialization to fail --- .../de/mm20/launcher2/favorites/FavoritesItem.kt | 5 +++-- .../mm20/launcher2/favorites/FavoritesRepository.kt | 12 +++++++----- .../main/java/de/mm20/launcher2/favorites/Module.kt | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/favorites/src/main/java/de/mm20/launcher2/favorites/FavoritesItem.kt b/favorites/src/main/java/de/mm20/launcher2/favorites/FavoritesItem.kt index 8dd6444f..2bff334f 100644 --- a/favorites/src/main/java/de/mm20/launcher2/favorites/FavoritesItem.kt +++ b/favorites/src/main/java/de/mm20/launcher2/favorites/FavoritesItem.kt @@ -18,9 +18,10 @@ data class FavoritesItem( var pinPosition: Int, var hidden: Boolean ) : KoinComponent { - private val serializer: SearchableSerializer by inject { parametersOf(searchable) } + private val serializer: SearchableSerializer? by inject { parametersOf(searchable) } - fun toDatabaseEntity(): FavoritesItemEntity { + fun toDatabaseEntity(): FavoritesItemEntity? { + val serializer = serializer ?: return null return FavoritesItemEntity( key = key, diff --git a/favorites/src/main/java/de/mm20/launcher2/favorites/FavoritesRepository.kt b/favorites/src/main/java/de/mm20/launcher2/favorites/FavoritesRepository.kt index 48aba1f3..585ee9d6 100644 --- a/favorites/src/main/java/de/mm20/launcher2/favorites/FavoritesRepository.kt +++ b/favorites/src/main/java/de/mm20/launcher2/favorites/FavoritesRepository.kt @@ -103,7 +103,7 @@ internal class FavoritesRepositoryImpl( pinPosition = 1, hidden = false ) - dao.insertReplaceExisting(favoritesItem.toDatabaseEntity()) + favoritesItem.toDatabaseEntity()?.let { dao.insertReplaceExisting(it) } } } } @@ -132,7 +132,7 @@ internal class FavoritesRepositoryImpl( pinPosition = 0, hidden = true ) - dao.insertReplaceExisting(favoritesItem.toDatabaseEntity()) + favoritesItem.toDatabaseEntity()?.let { dao.insertReplaceExisting(it) } } } } @@ -149,8 +149,10 @@ internal class FavoritesRepositoryImpl( scope.launch { withContext(Dispatchers.IO) { val item = FavoritesItem(searchable.key, searchable, 0, 0, false) - AppDatabase.getInstance(context).searchDao() - .incrementLaunchCount(item.toDatabaseEntity()) + item.toDatabaseEntity()?.let { + AppDatabase.getInstance(context).searchDao() + .incrementLaunchCount(it) + } } } } @@ -167,7 +169,7 @@ internal class FavoritesRepositoryImpl( scope.launch { withContext(Dispatchers.IO) { AppDatabase.getInstance(context).searchDao() - .saveFavorites(favorites.map { it.toDatabaseEntity() }) + .saveFavorites(favorites.mapNotNull { it.toDatabaseEntity() }) } } } diff --git a/favorites/src/main/java/de/mm20/launcher2/favorites/Module.kt b/favorites/src/main/java/de/mm20/launcher2/favorites/Module.kt index 3759ef60..ea8939dc 100644 --- a/favorites/src/main/java/de/mm20/launcher2/favorites/Module.kt +++ b/favorites/src/main/java/de/mm20/launcher2/favorites/Module.kt @@ -50,7 +50,7 @@ val favoritesModule = module { if (searchable is Website) { return@factory WebsiteSerializer() } - throw IllegalArgumentException("No known serializer exists for type ${searchable.javaClass.canonicalName}") + return@factory null } factory { (serialized: String) ->