
Keemun
Keemun is multiplatform Tea library.
Add the library to your build.gradle.kts file.
implementation("family.amma:keemun:1.3.0")
Multiplatform part
Entities
data class State(
val user: User?
)
sealed class Msg {
data class UserWasLoaded(val user: User) : Msg()
}
sealed class Effect {
object LoadUser : Effect()
}
An example of creating FeatureParams:
Platform part (Android)
data class ViewState(
val localizedAge: String?
)
private fun stateTransform(getContext: () -> Context) = StateTransform<State, ViewState> { state ->
ViewState(
localizedAge = state.user?.age?.let { getContext().getString(R.string.age, it) }
)
}
Add to your Fragment/Activity
class SomeFragment(featureParams: () -> SomeFeatureParams) : Fragment(R.layout.fragment_some) {
private val feature by androidConnectors(featureParams, getStateTransform = { stateTransform(::requireContext) })
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
.onViewCreated(view, savedInstanceState)
feature.render() { viewState ->
ageTextView.text = viewState.localizedAge
}
}
}
Send messages to change state
feature dispatch Msg.Foo
feature syncDispatch Msg.Bar