Move empty day separator filtering to a timeline post-processor (#6866)
* Move empty day separator filtering to a timeline post-processor * Split `FilterPublicMembershipChangesPostProcessor` from `RoomBeginningPostProcessor`
This commit is contained in:
parent
1f927b9965
commit
6cd0491292
9 changed files with 292 additions and 293 deletions
|
|
@ -16,7 +16,6 @@ import io.element.android.features.messages.impl.timeline.factories.event.Timeli
|
|||
import io.element.android.features.messages.impl.timeline.factories.virtual.TimelineItemVirtualFactory
|
||||
import io.element.android.features.messages.impl.timeline.groups.TimelineItemGrouper
|
||||
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
||||
import io.element.android.features.messages.impl.timeline.model.virtual.TimelineItemDaySeparatorModel
|
||||
import io.element.android.libraries.androidutils.diff.DiffCacheUpdater
|
||||
import io.element.android.libraries.androidutils.diff.MutableListDiffCache
|
||||
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
||||
|
|
@ -97,8 +96,7 @@ class TimelineItemsFactory(
|
|||
}
|
||||
}
|
||||
val result = timelineItemGrouper.group(newTimelineItemStates).toImmutableList()
|
||||
val filteredResult = filterEmptyDaySeparators(result)
|
||||
this._timelineItems.emit(filteredResult)
|
||||
this._timelineItems.emit(result)
|
||||
}
|
||||
|
||||
private suspend fun buildAndCacheItem(
|
||||
|
|
@ -116,25 +114,3 @@ class TimelineItemsFactory(
|
|||
return timelineItem
|
||||
}
|
||||
}
|
||||
|
||||
// Remove day separators for days with no events after the client-side event filtering
|
||||
internal fun filterEmptyDaySeparators(items: List<TimelineItem>): ImmutableList<TimelineItem> {
|
||||
return buildList {
|
||||
var hasEventBefore = false
|
||||
for (item in items) {
|
||||
when (item) {
|
||||
is TimelineItem.Event, is TimelineItem.GroupedEvents -> {
|
||||
hasEventBefore = true
|
||||
add(item)
|
||||
}
|
||||
is TimelineItem.Virtual if item.model is TimelineItemDaySeparatorModel -> {
|
||||
if (hasEventBefore) {
|
||||
add(item)
|
||||
}
|
||||
hasEventBefore = false
|
||||
}
|
||||
else -> add(item)
|
||||
}
|
||||
}
|
||||
}.toImmutableList()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue