Skip to content

Commit c0acd74

Browse files
authored
Merge pull request #1227 from DimensionDev/bugfix/status_media_changed
prevent status media change after media is loaded
2 parents dfe7280 + 44a00de commit c0acd74

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

app/src/main/java/dev/dimension/flare/ui/screen/media/StatusMediaScreen.kt

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,15 @@ import dev.dimension.flare.ui.humanizer.humanize
8787
import dev.dimension.flare.ui.model.UiMedia
8888
import dev.dimension.flare.ui.model.UiState
8989
import dev.dimension.flare.ui.model.UiTimeline
90-
import dev.dimension.flare.ui.model.map
90+
import dev.dimension.flare.ui.model.isSuccess
9191
import dev.dimension.flare.ui.model.onLoading
9292
import dev.dimension.flare.ui.model.onSuccess
9393
import dev.dimension.flare.ui.presenter.invoke
9494
import dev.dimension.flare.ui.presenter.status.StatusPresenter
9595
import dev.dimension.flare.ui.theme.FlareTheme
9696
import dev.dimension.flare.ui.theme.screenHorizontalPadding
9797
import io.github.fornewid.placeholder.material3.placeholder
98+
import kotlinx.collections.immutable.ImmutableList
9899
import kotlinx.collections.immutable.toImmutableList
99100
import kotlinx.coroutines.CoroutineScope
100101
import 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

Comments
 (0)