mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-10-10 20:33:47 +02:00
Improves filter by last date of the feed
This commit is contained in:
@@ -107,9 +107,10 @@ class FeedContentState(
|
|||||||
|
|
||||||
private fun updateFeed(notes: ImmutableList<Note>) {
|
private fun updateFeed(notes: ImmutableList<Note>) {
|
||||||
if (notes.size >= localFilter.limit()) {
|
if (notes.size >= localFilter.limit()) {
|
||||||
val lastNomeTime = notes.lastOrNull { it.event != null }?.createdAt()
|
// feeds might not be sorted by created at, so full search
|
||||||
if (lastNomeTime != lastNoteCreatedAtWhenFullyLoaded.value) {
|
val lastNoteTime = notes.minOfOrNull { it.createdAt() ?: Long.MAX_VALUE }
|
||||||
lastNoteCreatedAtWhenFullyLoaded.tryEmit(lastNomeTime)
|
if (lastNoteTime != lastNoteCreatedAtWhenFullyLoaded.value) {
|
||||||
|
lastNoteCreatedAtWhenFullyLoaded.tryEmit(lastNoteTime)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -78,6 +78,9 @@ class CardFeedContentState(
|
|||||||
|
|
||||||
val lastNoteCreatedAtWhenFullyLoaded = MutableStateFlow<Long?>(null)
|
val lastNoteCreatedAtWhenFullyLoaded = MutableStateFlow<Long?>(null)
|
||||||
|
|
||||||
|
private var lastAccount: Account? = null
|
||||||
|
private var lastNotes: Set<Note>? = null
|
||||||
|
|
||||||
fun sendToTop() {
|
fun sendToTop() {
|
||||||
if (scrolltoTopPending) return
|
if (scrolltoTopPending) return
|
||||||
|
|
||||||
@@ -89,8 +92,14 @@ class CardFeedContentState(
|
|||||||
scrolltoTopPending = false
|
scrolltoTopPending = false
|
||||||
}
|
}
|
||||||
|
|
||||||
private var lastAccount: Account? = null
|
fun visibleNotes(): List<Card> {
|
||||||
private var lastNotes: Set<Note>? = null
|
val currentState = _feedContent.value
|
||||||
|
return if (currentState is CardFeedState.Loaded) {
|
||||||
|
currentState.feed.value.list
|
||||||
|
} else {
|
||||||
|
emptyList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun lastNoteCreatedAtIfFilled() = lastNoteCreatedAtWhenFullyLoaded.value
|
fun lastNoteCreatedAtIfFilled() = lastNoteCreatedAtWhenFullyLoaded.value
|
||||||
|
|
||||||
@@ -305,8 +314,16 @@ class CardFeedContentState(
|
|||||||
|
|
||||||
private fun updateFeed(notes: ImmutableList<Card>) {
|
private fun updateFeed(notes: ImmutableList<Card>) {
|
||||||
if (notes.size >= localFilter.limit()) {
|
if (notes.size >= localFilter.limit()) {
|
||||||
val lastNomeTime = notes.lastOrNull()?.createdAt()
|
val lastNoteTime =
|
||||||
if (lastNomeTime != lastNoteCreatedAtWhenFullyLoaded.value) {
|
notes.minOfOrNull {
|
||||||
|
val createdAt = it.createdAt()
|
||||||
|
if (createdAt > 0L) {
|
||||||
|
createdAt
|
||||||
|
} else {
|
||||||
|
Long.MAX_VALUE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (lastNoteTime != lastNoteCreatedAtWhenFullyLoaded.value) {
|
||||||
lastNoteCreatedAtWhenFullyLoaded.tryEmit(notes.lastOrNull()?.createdAt())
|
lastNoteCreatedAtWhenFullyLoaded.tryEmit(notes.lastOrNull()?.createdAt())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user