parent
1014ffae29
commit
fafe6cf87a
@ -18,20 +18,16 @@ 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
|
val serializer = serializer
|
||||||
|
|
||||||
|
val data = searchable?.let { serializer.serialize(it) } ?: return null
|
||||||
|
|
||||||
return FavoritesItemEntity(
|
return FavoritesItemEntity(
|
||||||
key = key,
|
key = key,
|
||||||
serializedSearchable = searchable?.let {
|
serializedSearchable = "${serializer.typePrefix}#${data}",
|
||||||
"${serializer.typePrefix}#${
|
|
||||||
serializer.serialize(
|
|
||||||
it
|
|
||||||
)
|
|
||||||
}"
|
|
||||||
} ?: "",
|
|
||||||
hidden = hidden,
|
hidden = hidden,
|
||||||
pinPosition = pinPosition,
|
pinPosition = pinPosition,
|
||||||
launchCount = launchCount
|
launchCount = launchCount
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import de.mm20.launcher2.contacts.ContactDeserializer
|
|||||||
import de.mm20.launcher2.contacts.ContactSerializer
|
import de.mm20.launcher2.contacts.ContactSerializer
|
||||||
import de.mm20.launcher2.files.*
|
import de.mm20.launcher2.files.*
|
||||||
import de.mm20.launcher2.search.NullDeserializer
|
import de.mm20.launcher2.search.NullDeserializer
|
||||||
|
import de.mm20.launcher2.search.NullSerializer
|
||||||
import de.mm20.launcher2.search.data.*
|
import de.mm20.launcher2.search.data.*
|
||||||
import de.mm20.launcher2.websites.WebsiteDeserializer
|
import de.mm20.launcher2.websites.WebsiteDeserializer
|
||||||
import de.mm20.launcher2.websites.WebsiteSerializer
|
import de.mm20.launcher2.websites.WebsiteSerializer
|
||||||
@ -50,7 +51,7 @@ val favoritesModule = module {
|
|||||||
if (searchable is Website) {
|
if (searchable is Website) {
|
||||||
return@factory WebsiteSerializer()
|
return@factory WebsiteSerializer()
|
||||||
}
|
}
|
||||||
return@factory null
|
return@factory NullSerializer()
|
||||||
}
|
}
|
||||||
|
|
||||||
factory { (serialized: String) ->
|
factory { (serialized: String) ->
|
||||||
|
|||||||
@ -3,6 +3,16 @@ package de.mm20.launcher2.search
|
|||||||
import de.mm20.launcher2.search.data.Searchable
|
import de.mm20.launcher2.search.data.Searchable
|
||||||
|
|
||||||
interface SearchableSerializer {
|
interface SearchableSerializer {
|
||||||
fun serialize(searchable: Searchable): String
|
fun serialize(searchable: Searchable): String?
|
||||||
val typePrefix: String
|
val typePrefix: String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class NullSerializer : SearchableSerializer {
|
||||||
|
override fun serialize(searchable: Searchable): String? {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
override val typePrefix: String
|
||||||
|
get() = "null"
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user