experiment

This commit is contained in:
Avently 2025-01-23 09:37:55 -08:00
parent 085ada470e
commit c952c9e623

View file

@ -78,7 +78,7 @@ struct ChatView: View {
} }
VStack(spacing: 0) { VStack(spacing: 0) {
ZStack(alignment: .bottomTrailing) { ZStack(alignment: .bottomTrailing) {
chatItemsList() ChatItemsList(chat: $chat, mergedItems: $mergedItems, revealedItems: $revealedItems, scrollModel: $scrollModel, loadingMoreItems: $loadingMoreItems, allowLoadMoreItems: $allowLoadMoreItems, ignoreLoadingRequests: $ignoreLoadingRequests, searchText: $searchText, theme: $theme)
FloatingButtons(theme: theme, scrollModel: scrollModel, chat: chat, loadingMoreItems: $loadingMoreItems) FloatingButtons(theme: theme, scrollModel: scrollModel, chat: chat, loadingMoreItems: $loadingMoreItems)
} }
connectingText() connectingText()
@ -441,8 +441,21 @@ struct ChatView: View {
} }
} }
struct ChatItemsList: View {
@Binding var chat: Chat
@Binding var mergedItems: MergedItems
@Binding var revealedItems: [Int64]
@Binding var scrollModel: ReverseListScrollModel
@Binding var loadingMoreItems: Bool
@Binding var allowLoadMoreItems: Bool
@Binding var ignoreLoadingRequests: Int64?
@Binding var searchText: String
@Binding var theme: AppTheme
private func chatItemsList() -> some View { var searchValueIsEmpty: Bool { get { searchText.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty } }
var body: some View {
let im = ItemsModel.shared
let cInfo = chat.chatInfo let cInfo = chat.chatInfo
return GeometryReader { g in return GeometryReader { g in
let _ = logger.debug("LALAL RELOAD \(im.reversedChatItems.count)") let _ = logger.debug("LALAL RELOAD \(im.reversedChatItems.count)")
@ -498,15 +511,15 @@ struct ChatView: View {
} }
.onChange(of: im.reversedChatItems) { items in .onChange(of: im.reversedChatItems) { items in
updateMergedItemsTask?.cancel() updateMergedItemsTask?.cancel()
updateMergedItemsTask = Task { //updateMergedItemsTask = Task {
let items = MergedItems.create(items, chat.chatStats.unreadCount, revealedItems, ItemsModel.shared.chatState) let items = MergedItems.create(items, chat.chatStats.unreadCount, revealedItems, ItemsModel.shared.chatState)
if Task.isCancelled { //if Task.isCancelled {
return // return
} //}
await MainActor.run { //await MainActor.run {
mergedItems = items mergedItems = items
} //}
} //}
} }
.onChange(of: revealedItems) { revealed in .onChange(of: revealedItems) { revealed in
updateMergedItemsTask?.cancel() updateMergedItemsTask?.cancel()
@ -539,6 +552,8 @@ struct ChatView: View {
} }
} }
} }
}
@ViewBuilder private func connectingText() -> some View { @ViewBuilder private func connectingText() -> some View {
if case let .direct(contact) = chat.chatInfo, if case let .direct(contact) = chat.chatInfo,