@@ -87,14 +87,15 @@ import dev.dimension.flare.ui.humanizer.humanize
8787import dev.dimension.flare.ui.model.UiMedia
8888import dev.dimension.flare.ui.model.UiState
8989import dev.dimension.flare.ui.model.UiTimeline
90- import dev.dimension.flare.ui.model.map
90+ import dev.dimension.flare.ui.model.isSuccess
9191import dev.dimension.flare.ui.model.onLoading
9292import dev.dimension.flare.ui.model.onSuccess
9393import dev.dimension.flare.ui.presenter.invoke
9494import dev.dimension.flare.ui.presenter.status.StatusPresenter
9595import dev.dimension.flare.ui.theme.FlareTheme
9696import dev.dimension.flare.ui.theme.screenHorizontalPadding
9797import io.github.fornewid.placeholder.material3.placeholder
98+ import kotlinx.collections.immutable.ImmutableList
9899import kotlinx.collections.immutable.toImmutableList
99100import kotlinx.coroutines.CoroutineScope
100101import kotlinx.coroutines.Dispatchers
@@ -674,10 +675,24 @@ private fun statusMediaPresenter(
674675 remember(statusKey) {
675676 StatusPresenter (accountType = accountType, statusKey = statusKey)
676677 }.invoke()
677- val medias =
678- state.status.map {
679- (it.content as ? UiTimeline .ItemContent .Status )?.images.orEmpty().toImmutableList()
678+ var medias: UiState <ImmutableList <UiMedia >> by remember {
679+ mutableStateOf(UiState .Loading ())
680+ }
681+ // prevent media change when medias is loaded
682+ if (! medias.isSuccess) {
683+ LaunchedEffect (state) {
684+ state.status
685+ .onSuccess {
686+ medias =
687+ UiState .Success (
688+ (it.content as ? UiTimeline .ItemContent .Status )
689+ ?.images
690+ .orEmpty()
691+ .toImmutableList(),
692+ )
693+ }
680694 }
695+ }
681696 var currentPage by remember {
682697 mutableIntStateOf(initialIndex)
683698 }
0 commit comments