mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-04-29 23:26:23 +00:00
Fix messages list in iOS 15
This commit is contained in:
parent
75ae95007b
commit
f3d2f1cf6a
3 changed files with 47 additions and 39 deletions
|
|
@ -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 {
|
||||||
|
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 == .image || message.attachments.first!.type == .gif {
|
||||||
let result = imageDimensions(url: message.attachments.first!.full.absoluteString)
|
|
||||||
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()
|
||||||
|
|
@ -96,8 +96,8 @@ struct ChatBubbleView: View {
|
||||||
|
|
||||||
if !message.text.isEmpty {
|
if !message.text.isEmpty {
|
||||||
Text(message.text)
|
Text(message.text)
|
||||||
.foregroundStyle(Color.grayMain2c700)
|
.foregroundStyle(Color.grayMain2c700)
|
||||||
.default_text_style(styleSize: 16)
|
.default_text_style(styleSize: 16)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.padding(.all, 15)
|
.padding(.all, 15)
|
||||||
|
|
@ -126,17 +126,17 @@ struct ChatBubbleView: View {
|
||||||
}
|
}
|
||||||
|
|
||||||
enum URLType {
|
enum URLType {
|
||||||
case name(String) // local file name of gif
|
case name(String) // local file name of gif
|
||||||
case url(URL) // remote url
|
case url(URL) // remote url
|
||||||
|
|
||||||
var url: URL? {
|
var url: URL? {
|
||||||
switch self {
|
switch self {
|
||||||
case .name(let name):
|
case .name(let name):
|
||||||
return Bundle.main.url(forResource: name, withExtension: "gif")
|
return Bundle.main.url(forResource: name, withExtension: "gif")
|
||||||
case .url(let remoteURL):
|
case .url(let remoteURL):
|
||||||
return remoteURL
|
return remoteURL
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct GifImageView: UIViewRepresentable {
|
struct GifImageView: UIViewRepresentable {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
.id(conversationViewModel.conversationMessagesList[index])
|
ChatBubbleView(conversationViewModel: conversationViewModel, message: conversationViewModel.conversationMessagesSection.first!.rows[index], geometryProxy: geometry)
|
||||||
.listRowInsets(EdgeInsets(top: 2, leading: 10, bottom: 2, trailing: 10))
|
.id(conversationViewModel.conversationMessagesList[index])
|
||||||
.listRowSeparator(.hidden)
|
.listRowInsets(EdgeInsets(top: 2, leading: 10, bottom: 2, trailing: 10))
|
||||||
.onAppear {
|
.listRowSeparator(.hidden)
|
||||||
if index == 0 && conversationViewModel.displayedConversationHistorySize > conversationViewModel.conversationMessagesList.count {
|
.scaleEffect(x: 1, y: -1, anchor: .center)
|
||||||
//DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
|
.onAppear {
|
||||||
conversationViewModel.getOldMessages()
|
if index == conversationViewModel.conversationMessagesList.count - 1 && conversationViewModel.displayedConversationHistorySize > conversationViewModel.conversationMessagesList.count {
|
||||||
//}
|
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
|
||||||
}
|
conversationViewModel.getOldMessages()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.scaleEffect(x: 1, y: -1, anchor: .center)
|
||||||
.listStyle(.plain)
|
.listStyle(.plain)
|
||||||
.onTapGesture {
|
.onTapGesture {
|
||||||
UIApplication.shared.endEditing()
|
UIApplication.shared.endEditing()
|
||||||
|
|
@ -242,23 +245,26 @@ struct ConversationFragment: View {
|
||||||
conversationViewModel.getMessages()
|
conversationViewModel.getMessages()
|
||||||
}
|
}
|
||||||
.onChange(of: conversationViewModel.conversationMessagesList) { _ in
|
.onChange(of: conversationViewModel.conversationMessagesList) { _ in
|
||||||
if conversationViewModel.conversationMessagesList.count <= 30 {
|
/*
|
||||||
proxy.scrollTo(
|
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
|
||||||
conversationViewModel.conversationMessagesList.last, anchor: .top
|
if conversationViewModel.conversationMessagesList.count <= 30 {
|
||||||
)
|
proxy.scrollTo(
|
||||||
} else if conversationViewModel.conversationMessagesList.count >= conversationViewModel.displayedConversationHistorySize {
|
conversationViewModel.conversationMessagesList.first, anchor: .top
|
||||||
proxy.scrollTo(
|
)
|
||||||
conversationViewModel.conversationMessagesList[conversationViewModel.displayedConversationHistorySize%30], anchor: .top
|
} else if conversationViewModel.conversationMessagesList.count >= conversationViewModel.displayedConversationHistorySize {
|
||||||
)
|
proxy.scrollTo(
|
||||||
} else {
|
conversationViewModel.conversationMessagesList[conversationViewModel.displayedConversationHistorySize%30], anchor: .top
|
||||||
proxy.scrollTo(30, anchor: .top)
|
)
|
||||||
|
} else {
|
||||||
|
proxy.scrollTo(30, anchor: .top)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
.onDisappear {
|
.onDisappear {
|
||||||
conversationViewModel.resetMessage()
|
conversationViewModel.resetMessage()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HStack(spacing: 0) {
|
HStack(spacing: 0) {
|
||||||
|
|
|
||||||
|
|
@ -116,8 +116,10 @@ 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 {
|
||||||
let attachment = Attachment(id: UUID().uuidString, url: URL(string: self.getNewFilePath(name: content.name ?? ""))!, type: (content.name?.lowercased().hasSuffix("gif"))! ? .gif : .image)
|
if URL(string: self.getNewFilePath(name: content.name ?? "")) != nil {
|
||||||
attachmentList.append(attachment)
|
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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue