Fix messages list in iOS 15

This commit is contained in:
Benoit Martins 2024-03-14 15:09:10 +01:00
parent 75ae95007b
commit f3d2f1cf6a
3 changed files with 47 additions and 39 deletions

View file

@ -35,11 +35,11 @@ struct ChatBubbleView: View {
Spacer() Spacer()
} }
VStack { VStack(alignment: message.isOutgoing ? .trailing : .leading) {
if !message.attachments.isEmpty { if !message.attachments.isEmpty {
if message.attachments.count == 1 { if message.attachments.count == 1 {
if message.attachments.first!.type == .image || message.attachments.first!.type == .gif {
let result = imageDimensions(url: message.attachments.first!.full.absoluteString) let result = imageDimensions(url: message.attachments.first!.full.absoluteString)
if message.attachments.first!.type == .image || message.attachments.first!.type == .gif {
if message.attachments.first!.type != .gif { if message.attachments.first!.type != .gif {
AsyncImage(url: message.attachments.first!.full) { image in AsyncImage(url: message.attachments.first!.full) { image in
image.resizable() image.resizable()

View file

@ -217,23 +217,26 @@ struct ConversationFragment: View {
conversationViewModel.resetMessage() conversationViewModel.resetMessage()
} }
} else { } else {
/*
ScrollViewReader { proxy in ScrollViewReader { proxy in
List { List {
ForEach(0..<conversationViewModel.conversationMessagesList.count, id: \.self) { index in ForEach(0..<conversationViewModel.conversationMessagesList.count, id: \.self) { index in
ChatBubbleView(conversationViewModel: conversationViewModel, message: conversationViewModel.conversationMessagesSection.first!.rows[index]) if index < conversationViewModel.conversationMessagesSection.first!.rows.count {
ChatBubbleView(conversationViewModel: conversationViewModel, message: conversationViewModel.conversationMessagesSection.first!.rows[index], geometryProxy: geometry)
.id(conversationViewModel.conversationMessagesList[index]) .id(conversationViewModel.conversationMessagesList[index])
.listRowInsets(EdgeInsets(top: 2, leading: 10, bottom: 2, trailing: 10)) .listRowInsets(EdgeInsets(top: 2, leading: 10, bottom: 2, trailing: 10))
.listRowSeparator(.hidden) .listRowSeparator(.hidden)
.scaleEffect(x: 1, y: -1, anchor: .center)
.onAppear { .onAppear {
if index == 0 && conversationViewModel.displayedConversationHistorySize > conversationViewModel.conversationMessagesList.count { if index == conversationViewModel.conversationMessagesList.count - 1 && conversationViewModel.displayedConversationHistorySize > conversationViewModel.conversationMessagesList.count {
//DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) { DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
conversationViewModel.getOldMessages() conversationViewModel.getOldMessages()
//}
} }
} }
} }
} }
}
}
.scaleEffect(x: 1, y: -1, anchor: .center)
.listStyle(.plain) .listStyle(.plain)
.onTapGesture { .onTapGesture {
UIApplication.shared.endEditing() UIApplication.shared.endEditing()
@ -242,9 +245,11 @@ struct ConversationFragment: View {
conversationViewModel.getMessages() conversationViewModel.getMessages()
} }
.onChange(of: conversationViewModel.conversationMessagesList) { _ in .onChange(of: conversationViewModel.conversationMessagesList) { _ in
/*
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
if conversationViewModel.conversationMessagesList.count <= 30 { if conversationViewModel.conversationMessagesList.count <= 30 {
proxy.scrollTo( proxy.scrollTo(
conversationViewModel.conversationMessagesList.last, anchor: .top conversationViewModel.conversationMessagesList.first, anchor: .top
) )
} else if conversationViewModel.conversationMessagesList.count >= conversationViewModel.displayedConversationHistorySize { } else if conversationViewModel.conversationMessagesList.count >= conversationViewModel.displayedConversationHistorySize {
proxy.scrollTo( proxy.scrollTo(
@ -253,12 +258,13 @@ struct ConversationFragment: View {
} else { } else {
proxy.scrollTo(30, anchor: .top) proxy.scrollTo(30, anchor: .top)
} }
}
*/
} }
.onDisappear { .onDisappear {
conversationViewModel.resetMessage() conversationViewModel.resetMessage()
} }
} }
*/
} }
HStack(spacing: 0) { HStack(spacing: 0) {

View file

@ -116,12 +116,14 @@ class ConversationViewModel: ObservableObject {
if content.filePath == nil || content.filePath!.isEmpty { if content.filePath == nil || content.filePath!.isEmpty {
self.downloadContent(chatMessage: eventLog.chatMessage!, content: content) self.downloadContent(chatMessage: eventLog.chatMessage!, content: content)
} else { } else {
if URL(string: self.getNewFilePath(name: content.name ?? "")) != nil {
let attachment = Attachment(id: UUID().uuidString, url: URL(string: self.getNewFilePath(name: content.name ?? ""))!, type: (content.name?.lowercased().hasSuffix("gif"))! ? .gif : .image) let attachment = Attachment(id: UUID().uuidString, url: URL(string: self.getNewFilePath(name: content.name ?? ""))!, type: (content.name?.lowercased().hasSuffix("gif"))! ? .gif : .image)
attachmentList.append(attachment) attachmentList.append(attachment)
} }
} }
} }
} }
}
conversationMessage.append(Message( conversationMessage.append(Message(
id: UUID().uuidString, id: UUID().uuidString,