Improves filter by last date of the feed

This commit is contained in:
Vitor Pamplona
2025-08-14 16:09:26 -04:00
parent 58c8ff646f
commit 97bad5707f
2 changed files with 25 additions and 7 deletions

View File

@@ -107,9 +107,10 @@ class FeedContentState(
private fun updateFeed(notes: ImmutableList<Note>) {
if (notes.size >= localFilter.limit()) {
val lastNomeTime = notes.lastOrNull { it.event != null }?.createdAt()
if (lastNomeTime != lastNoteCreatedAtWhenFullyLoaded.value) {
lastNoteCreatedAtWhenFullyLoaded.tryEmit(lastNomeTime)
// feeds might not be sorted by created at, so full search
val lastNoteTime = notes.minOfOrNull { it.createdAt() ?: Long.MAX_VALUE }
if (lastNoteTime != lastNoteCreatedAtWhenFullyLoaded.value) {
lastNoteCreatedAtWhenFullyLoaded.tryEmit(lastNoteTime)
}
}

View File

@@ -78,6 +78,9 @@ class CardFeedContentState(
val lastNoteCreatedAtWhenFullyLoaded = MutableStateFlow<Long?>(null)
private var lastAccount: Account? = null
private var lastNotes: Set<Note>? = null
fun sendToTop() {
if (scrolltoTopPending) return
@@ -89,8 +92,14 @@ class CardFeedContentState(
scrolltoTopPending = false
}
private var lastAccount: Account? = null
private var lastNotes: Set<Note>? = null
fun visibleNotes(): List<Card> {
val currentState = _feedContent.value
return if (currentState is CardFeedState.Loaded) {
currentState.feed.value.list
} else {
emptyList()
}
}
fun lastNoteCreatedAtIfFilled() = lastNoteCreatedAtWhenFullyLoaded.value
@@ -305,8 +314,16 @@ class CardFeedContentState(
private fun updateFeed(notes: ImmutableList<Card>) {
if (notes.size >= localFilter.limit()) {
val lastNomeTime = notes.lastOrNull()?.createdAt()
if (lastNomeTime != lastNoteCreatedAtWhenFullyLoaded.value) {
val lastNoteTime =
notes.minOfOrNull {
val createdAt = it.createdAt()
if (createdAt > 0L) {
createdAt
} else {
Long.MAX_VALUE
}
}
if (lastNoteTime != lastNoteCreatedAtWhenFullyLoaded.value) {
lastNoteCreatedAtWhenFullyLoaded.tryEmit(notes.lastOrNull()?.createdAt())
}
}