diff --git a/apps/ios/Shared/Model/SimpleXAPI.swift b/apps/ios/Shared/Model/SimpleXAPI.swift index 857d165f04..7f666b2861 100644 --- a/apps/ios/Shared/Model/SimpleXAPI.swift +++ b/apps/ios/Shared/Model/SimpleXAPI.swift @@ -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)) diff --git a/apps/ios/Shared/Views/Chat/ChatView.swift b/apps/ios/Shared/Views/Chat/ChatView.swift index d8f1d2a105..b3d03833f7 100644 --- a/apps/ios/Shared/Views/Chat/ChatView.swift +++ b/apps/ios/Shared/Views/Chat/ChatView.swift @@ -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..