mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2024-12-17 17:20:21 +01:00
drop items when scrolling up
This commit is contained in:
@@ -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))
|
||||
|
||||
@@ -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 }
|
||||
|
||||
Reference in New Issue
Block a user