Nikola Milovic
12/07/2021, 3:43 PMrsktash
12/07/2021, 3:54 PMNikola Milovic
12/07/2021, 4:36 PMArkadii Ivanov
12/07/2021, 6:40 PMNikola Milovic
12/08/2021, 2:18 PMArkadii Ivanov
12/08/2021, 2:32 PMval labels: Observable<Label>
as part of the component's interface, and just write something like this in the component's impl:
override val labels: Observable<Label> = store.labels
Or if you want separate types, you can have something like this:
interface Some {
val events: Observable<Event>
sealed interface Event {
object Success : Event
}
}
class SomeComponent : Some {
val store = ...
override val events: Observable<Event> = store.labels.map(labelToComponentEvent)
}
internal val labelToComponentEvent: (Label) -> Event = {
when (it) {
is Label.Success -> Event.Success
}
}
Nikola Milovic
12/23/2021, 7:50 AMLabel {
object ShowSomePopup // gets mapped to an event
object CloseCurrentScreen // doesn't have an event tied to it
}
Arkadii Ivanov
12/23/2021, 12:37 PMmapNotNull
operator.when
and manipulate the router.