Deep Patel
02/15/2026, 10:30 PMDeep Patel
02/15/2026, 10:31 PMdata class Model(
val dayPresenter: DayPresenter,
val initialPage: Int = Int.MAX_VALUE / 2
) : BaseModelDeep Patel
02/15/2026, 10:32 PM@Inject
@ContributesRenderer
class TimelineRenderer(
private val rendererFactory: RendererFactory
) : ComposeRenderer<TimelinePresenter.Model>() {
@Composable
override fun Compose(model: TimelinePresenter.Model) {
HorizontalPager { pageIndex ->
// 1. Calculate the specific date based on the page index offset
val date = remember(pageIndex) {
calculateDateFromIndex(pageIndex, model.initialPage)
}
// 2. Call the child presenter. Molecule turns this into a reactive stream.
// When this page leaves the 'beyondViewport' range, this call stops,
// and the child presenter's lifecycle ends.
val dayModel = model.dayPresenter.present(DayPresenter.Input(date))
// 3. Render the computed sub-model
rendererFactory.getComposeRenderer(dayModel).renderCompose(dayModel)
}
}
}Deep Patel
02/15/2026, 10:33 PMsaket
02/15/2026, 11:27 PMDeep Patel
02/15/2026, 11:30 PMDeep Patel
02/16/2026, 2:00 AM