diff --git a/apps/ios/Shared/Model/ChatModel.swift b/apps/ios/Shared/Model/ChatModel.swift index f3fad315f1..62bda85270 100644 --- a/apps/ios/Shared/Model/ChatModel.swift +++ b/apps/ios/Shared/Model/ChatModel.swift @@ -962,6 +962,7 @@ final class ChatModel: ObservableObject { memberIds.insert(m.groupMemberId) } } else { + // LALAL getPrevHiddenMember: index >= count of reversed items: 176 vs 50 logger.error("getPrevHiddenMember: index >= count of reversed items: \(i) vs \(items.count)") } } diff --git a/apps/ios/Shared/Views/Chat/ChatScrollHelpers.swift b/apps/ios/Shared/Views/Chat/ChatScrollHelpers.swift index 74a8316272..22958177f5 100644 --- a/apps/ios/Shared/Views/Chat/ChatScrollHelpers.swift +++ b/apps/ios/Shared/Views/Chat/ChatScrollHelpers.swift @@ -44,7 +44,7 @@ func preloadItems(_ mergedItems: MergedItems, _ allowLoadMoreItems: Bool, _ list var lastIndexToLoadFrom: Int? = findLastIndexToLoadFromInSplits(firstVisibleIndex, lastVisibleIndex, remaining, splits) logger.debug("LALAL LASTINDEX TO LOAD FROM \(lastIndexToLoadFrom ?? -1)") let items: [ChatItem] = ItemsModel.shared.reversedChatItems.reversed() - if splits.isEmpty && !items.isEmpty && lastVisibleIndex > mergedItems.items.count - remaining && items.count >= ChatPagination.INITIAL_COUNT { + if splits.isEmpty && !items.isEmpty && lastVisibleIndex > mergedItems.items.count - remaining { lastIndexToLoadFrom = items.count - 1 } logger.debug("LALAL LASTINDEX TO LOAD FROM after \(lastIndexToLoadFrom ?? -1), count \(items.count)") @@ -102,6 +102,7 @@ private func lastFullyVisibleIemInListState(_ mergedItems: MergedItems, _ listSt } private func findLastIndexToLoadFromInSplits(_ firstVisibleIndex: Int, _ lastVisibleIndex: Int, _ remaining: Int, _ splits: [SplitRange]) -> Int? { +// logger.debug("LALAL SPLITS \(String(describing: splits)) \(firstVisibleIndex) / \(remaining) \(lastVisibleIndex)") for split in splits { // before any split if split.indexRangeInParentItems.lowerBound > firstVisibleIndex { diff --git a/apps/ios/Shared/Views/Chat/ChatView.swift b/apps/ios/Shared/Views/Chat/ChatView.swift index ceb82fbfdb..3531408579 100644 --- a/apps/ios/Shared/Views/Chat/ChatView.swift +++ b/apps/ios/Shared/Views/Chat/ChatView.swift @@ -553,16 +553,6 @@ struct ChatView: View { func updateOnListChange(_ items: [MergedItem], _ listState: ListState) { let im = ItemsModel.shared -// let unreadBelow = -// if let id = listState.bottomItemId, -// let index = im.reversedChatItems.firstIndex(where: { $0.id == id }) -// { -// im.reversedChatItems[..: UIViewControllerRepresentable { // in case of listener will not be called await MainActor.run { representer.scrollState = .atDestination - logger.debug("LALAL SET DESTINATION0") } } catch {} } runBlockOnEndScrolling = { task.cancel() - logger.debug("LALAL ENDED SCROLLING") self.representer.scrollState = .atDestination - logger.debug("LALAL SET DESTINATION1") self.runBlockOnEndScrolling = nil } } @@ -283,7 +280,6 @@ struct ReverseList: UIViewControllerRepresentable { let listState = getListState(items) let wasFirstVisibleRow = listState?.firstVisibleItemIndex ?? 0//tableView.indexPathsForVisibleRows?.first?.row ?? 0 let wasFirstVisibleOffset = listState?.firstVisibleItemOffset ?? 0 - let countDiff = max(0, snapshot.numberOfItems - prevSnapshot.numberOfItems) // Sets content offset on initial load if wasCount == 0 { dataSource.apply( @@ -323,12 +319,18 @@ struct ReverseList: UIViewControllerRepresentable { animatingDifferences: false ) logger.debug("LALAL WAS LISTSTATE \(listState?.firstVisibleItemIndex ?? -3) now \(self.getListState(items)?.firstVisibleItemIndex ?? -4)") - if listState?.firstVisibleItemIndex == getListState(items)?.firstVisibleItemIndex { + let newListState = getListState(items) + if listState?.firstVisibleItemIndex == newListState?.firstVisibleItemIndex { // added new items to top } else { self.tableView.setContentOffset(self.tableView.contentOffset, animated: false) // added new items to bottom // logger.debug("LALAL WAS HEIGHT \(wasContentHeight) now \(self.tableView.contentSize.height), offset was \(wasOffset), now \(self.tableView.contentOffset.y), will be \(self.tableView.contentOffset.y + (self.tableView.contentSize.height - wasContentHeight)), countDiff \(countDiff), wasVisibleRow \(wasFirstVisibleRow), wasFirstVisibleOffset \(wasFirstVisibleOffset)") + let countDiff = if let listState, let newListState { + newListState.firstVisibleItemIndex - listState.firstVisibleItemIndex + } else { + max(0, snapshot.numberOfItems - prevSnapshot.numberOfItems) + } logger.debug("LALAL BEFORE SCROLLTOROW \(snapshot.numberOfItems - 1) \(countDiff) \(wasFirstVisibleRow) \(self.tableView.contentOffset.y) \(wasFirstVisibleOffset)") getListState(items) self.tableView.scrollToRow(