chibatching / Kotpref

Kotpref - Android SharedPreferences delegation library for Kotlin
https://chibatching.github.io/Kotpref/
Apache License 2.0
696 stars 50 forks source link

Persisting custom objects #42

Open Miha-x64 opened 7 years ago

Miha-x64 commented 7 years ago

Hello again :) What about supporting pref values, which could be presisted into String by custom converter?

object AppState { // client code
    val user by customPref<User?>(default = null, converter = UserConverter)
}

interface PrefConverter<T> { // library code
    fun fromPref(str: String): T
    fun toPref(t: T): String
}

object UserConverter : PrefConverter<User> { // client code
    private val gson = Gson()
    override fun fromPref(str: String) = gson.fromJson(str, User::class.java)
    override fun toPref(t: T) = gson.toJson(t)
}

Many ORMs (Hibernate, GreenDAO, ORMLite, ObjectBox, etc) do this for object's fields, so we can borrow some architectural solutions from them.

chibatching commented 7 years ago

I don't have the plan to support custom converter, but your idea is interesting. I'll investigate it. Thanks! :)