Allow searchable serialization to fail

This commit is contained in:
MM20 2022-02-04 19:06:39 +01:00
parent be2b1479ac
commit c5393f3eaa
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
3 changed files with 11 additions and 8 deletions

View File

@ -18,9 +18,10 @@ data class FavoritesItem(
var pinPosition: Int, var pinPosition: Int,
var hidden: Boolean var hidden: Boolean
) : KoinComponent { ) : 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( return FavoritesItemEntity(
key = key, key = key,

View File

@ -103,7 +103,7 @@ internal class FavoritesRepositoryImpl(
pinPosition = 1, pinPosition = 1,
hidden = false hidden = false
) )
dao.insertReplaceExisting(favoritesItem.toDatabaseEntity()) favoritesItem.toDatabaseEntity()?.let { dao.insertReplaceExisting(it) }
} }
} }
} }
@ -132,7 +132,7 @@ internal class FavoritesRepositoryImpl(
pinPosition = 0, pinPosition = 0,
hidden = true hidden = true
) )
dao.insertReplaceExisting(favoritesItem.toDatabaseEntity()) favoritesItem.toDatabaseEntity()?.let { dao.insertReplaceExisting(it) }
} }
} }
} }
@ -149,8 +149,10 @@ internal class FavoritesRepositoryImpl(
scope.launch { scope.launch {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
val item = FavoritesItem(searchable.key, searchable, 0, 0, false) val item = FavoritesItem(searchable.key, searchable, 0, 0, false)
item.toDatabaseEntity()?.let {
AppDatabase.getInstance(context).searchDao() AppDatabase.getInstance(context).searchDao()
.incrementLaunchCount(item.toDatabaseEntity()) .incrementLaunchCount(it)
}
} }
} }
} }
@ -167,7 +169,7 @@ internal class FavoritesRepositoryImpl(
scope.launch { scope.launch {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
AppDatabase.getInstance(context).searchDao() AppDatabase.getInstance(context).searchDao()
.saveFavorites(favorites.map { it.toDatabaseEntity() }) .saveFavorites(favorites.mapNotNull { it.toDatabaseEntity() })
} }
} }
} }

View File

@ -50,7 +50,7 @@ val favoritesModule = module {
if (searchable is Website) { if (searchable is Website) {
return@factory WebsiteSerializer() return@factory WebsiteSerializer()
} }
throw IllegalArgumentException("No known serializer exists for type ${searchable.javaClass.canonicalName}") return@factory null
} }
factory { (serialized: String) -> factory { (serialized: String) ->