drop items when scrolling up

This commit is contained in:
Diogo
2024-11-07 23:51:56 +00:00
parent 9974460dcf
commit fbddf1d34e
2 changed files with 14 additions and 4 deletions
+3 -3
View File
@@ -318,9 +318,9 @@ private func apiChatsResponse(_ r: ChatResponse) throws -> [ChatData] {
throw r
}
let loadItemsPerPage = 50
let preloadItem = 8
let idealChatListSize = 500
let loadItemsPerPage = 100
let preloadItem = 25
let idealChatListSize = 300
func apiGetChat(type: ChatType, id: Int64, search: String = "") async throws -> (Chat, Int?) {
let r = await chatSendCmd(.apiGetChat(type: type, id: id, pagination: .initial(count: loadItemsPerPage), search: search))
+11 -1
View File
@@ -916,7 +916,17 @@ struct ChatView: View {
firstPage = true
} else if dedupedreversePage.count > 0 {
switch pagination {
case .before, .last, .initial:
case .last, .initial:
im.reversedChatItems.append(contentsOf: dedupedreversePage)
case .before(_, _):
if im.reversedChatItems.count + dedupedreversePage.count > idealChatListSize {
if let gap = im.gap {
im.gap = ChatGap(index: gap.index, size: gap.size + dedupedreversePage.count)
} else {
im.gap = ChatGap(index: loadItemsPerPage, size: dedupedreversePage.count)
}
im.reversedChatItems.removeSubrange(loadItemsPerPage..<loadItemsPerPage + dedupedreversePage.count)
}
im.reversedChatItems.append(contentsOf: dedupedreversePage)
case let .after(chatItemId, _):
let index = im.reversedChatItems.firstIndex { $0.id == chatItemId }