@ -49,10 +49,12 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.NonCancellable
import kotlinx.coroutines.NonCancellable
import kotlinx.coroutines.cancel
import kotlinx.coroutines.cancel
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.getAndUpdate
import kotlinx.coroutines.flow.getAndUpdate
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.map
@ -88,8 +90,8 @@ class RustTimeline(
private val initLatch = CompletableDeferred < Unit > ( )
private val initLatch = CompletableDeferred < Unit > ( )
private val isTimelineInitialized = MutableStateFlow ( false )
private val isTimelineInitialized = MutableStateFlow ( false )
private val _timelineItems : MutableState Flow < List < MatrixTimelineItem > > =
private val _timelineItems : MutableShared Flow < List < MatrixTimelineItem > > =
MutableStateFlow ( emptyList ( ) )
MutableSharedFlow ( replay = 1 , extraBufferCapacity = Int . MAX _VALUE )
private val timelineEventContentMapper = TimelineEventContentMapper ( )
private val timelineEventContentMapper = TimelineEventContentMapper ( )
private val inReplyToMapper = InReplyToMapper ( timelineEventContentMapper )
private val inReplyToMapper = InReplyToMapper ( timelineEventContentMapper )
@ -522,7 +524,7 @@ class RustTimeline(
}
}
override suspend fun loadReplyDetails ( eventId : EventId ) : InReplyTo = withContext ( dispatcher ) {
override suspend fun loadReplyDetails ( eventId : EventId ) : InReplyTo = withContext ( dispatcher ) {
val timelineItem = _timelineItems . value . firstOrNull { timelineItem ->
val timelineItem = _timelineItems . first ( ) . firstOrNull { timelineItem ->
timelineItem is MatrixTimelineItem . Event && timelineItem . eventId == eventId
timelineItem is MatrixTimelineItem . Event && timelineItem . eventId == eventId
} as ? MatrixTimelineItem . Event
} as ? MatrixTimelineItem . Event