mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-17 02:58:07 +00:00
Update last message text in conversation list
This commit is contained in:
parent
0daba4fe03
commit
7bdb8fa92d
6 changed files with 89 additions and 33 deletions
|
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="#4e6074" viewBox="0 0 256 256"><path d="M208,32H184V24a8,8,0,0,0-16,0v8H88V24a8,8,0,0,0-16,0v8H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM72,48v8a8,8,0,0,0,16,0V48h80v8a8,8,0,0,0,16,0V48h24V80H48V48ZM208,208H48V96H208V208Zm-96-88v64a8,8,0,0,1-16,0V132.94l-4.42,2.22a8,8,0,0,1-7.16-14.32l16-8A8,8,0,0,1,112,120Zm59.16,30.45L152,176h16a8,8,0,0,1,0,16H136a8,8,0,0,1-6.4-12.8l28.78-38.37A8,8,0,1,0,145.07,132a8,8,0,1,1-13.85-8A24,24,0,0,1,176,136,23.76,23.76,0,0,1,171.16,150.45Z"></path></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="#000000" viewBox="0 0 256 256"><path d="M208,32H184V24a8,8,0,0,0-16,0v8H88V24a8,8,0,0,0-16,0v8H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM72,48v8a8,8,0,0,0,16,0V48h80v8a8,8,0,0,0,16,0V48h24V80H48V48ZM208,208H48V96H208V208Zm-96-88v64a8,8,0,0,1-16,0V132.94l-4.42,2.22a8,8,0,0,1-7.16-14.32l16-8A8,8,0,0,1,112,120Zm59.16,30.45L152,176h16a8,8,0,0,1,0,16H136a8,8,0,0,1-6.4-12.8l28.78-38.37A8,8,0,1,0,145.07,132a8,8,0,1,1-13.85-8A24,24,0,0,1,176,136,23.76,23.76,0,0,1,171.16,150.45Z"></path></svg>
|
||||
|
Before Width: | Height: | Size: 604 B After Width: | Height: | Size: 604 B |
21
Linphone/Assets.xcassets/trash.imageset/Contents.json
vendored
Normal file
21
Linphone/Assets.xcassets/trash.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "trash.svg",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
1
Linphone/Assets.xcassets/trash.imageset/trash.svg
vendored
Normal file
1
Linphone/Assets.xcassets/trash.imageset/trash.svg
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="#000000" viewBox="0 0 256 256"><path d="M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z"></path></svg>
|
||||
|
After Width: | Height: | Size: 415 B |
|
|
@ -105,26 +105,46 @@ struct ConversationRow: View {
|
|||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.lineLimit(1)
|
||||
|
||||
if conversation.lastMessageInItalic {
|
||||
Text(conversation.lastMessageText)
|
||||
.italic()
|
||||
.if(conversation.unreadMessagesCount > 0) { view in
|
||||
view.bold()
|
||||
}
|
||||
.foregroundStyle(Color.grayMain2c400)
|
||||
.font(.system(size: 14))
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.lineLimit(1)
|
||||
} else {
|
||||
Text(conversation.lastMessageText)
|
||||
HStack(spacing: 0) {
|
||||
Text(conversation.lastMessagePrefixText)
|
||||
.foregroundStyle(Color.grayMain2c400)
|
||||
.if(conversation.unreadMessagesCount > 0) { view in
|
||||
view.default_text_style_700(styleSize: 14)
|
||||
}
|
||||
.default_text_style(styleSize: 14)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.lineLimit(1)
|
||||
.layoutPriority(1)
|
||||
|
||||
if !conversation.lastMessageIcon.isEmpty {
|
||||
Image(conversation.lastMessageIcon)
|
||||
.resizable()
|
||||
.frame(width: 16, height: 16)
|
||||
.layoutPriority(0)
|
||||
.padding(.trailing, 2)
|
||||
}
|
||||
|
||||
if conversation.lastMessageInItalic {
|
||||
Text(conversation.lastMessageText)
|
||||
.italic()
|
||||
.if(conversation.unreadMessagesCount > 0) { view in
|
||||
view.bold()
|
||||
}
|
||||
.foregroundStyle(Color.grayMain2c400)
|
||||
.font(.system(size: 14))
|
||||
.lineLimit(1)
|
||||
.layoutPriority(-1)
|
||||
} else {
|
||||
Text(conversation.lastMessageText)
|
||||
.foregroundStyle(Color.grayMain2c400)
|
||||
.if(conversation.unreadMessagesCount > 0) { view in
|
||||
view.default_text_style_700(styleSize: 14)
|
||||
}
|
||||
.default_text_style(styleSize: 14)
|
||||
.lineLimit(1)
|
||||
.layoutPriority(-1)
|
||||
}
|
||||
}
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
Spacer()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,9 @@ class ConversationModel: ObservableObject, Identifiable {
|
|||
@Published var isMuted: Bool
|
||||
@Published var isEphemeral: Bool
|
||||
@Published var encryptionEnabled: Bool
|
||||
@Published var lastMessagePrefixText: String
|
||||
@Published var lastMessageText: String
|
||||
@Published var lastMessageIcon: String
|
||||
@Published var lastMessageIsOutgoing: Bool
|
||||
@Published var lastMessageState: Int
|
||||
@Published var lastMessageInItalic: Bool
|
||||
|
|
@ -139,8 +141,12 @@ class ConversationModel: ObservableObject, Identifiable {
|
|||
|
||||
self.lastMessage = nil
|
||||
|
||||
self.lastMessagePrefixText = ""
|
||||
|
||||
self.lastMessageText = ""
|
||||
|
||||
self.lastMessageIcon = ""
|
||||
|
||||
self.lastMessageIsOutgoing = false
|
||||
|
||||
self.lastMessageState = 0
|
||||
|
|
@ -297,9 +303,9 @@ class ConversationModel: ObservableObject, Identifiable {
|
|||
fromAddressFriend = nil
|
||||
}
|
||||
|
||||
var lastMessageTextTmp = (fromAddressFriend ?? "")
|
||||
+ (lastMessage!.contents.first(where: {$0.isText == true})?.utf8Text ?? (lastMessage!.contents.first(where: {$0.isFile == true || $0.isFileTransfer == true})?.name ?? ""))
|
||||
|
||||
let lastMessagePrefixTextTmp = (fromAddressFriend ?? "")
|
||||
var lastMessageTextTmp = (lastMessage!.contents.first(where: {$0.isText == true})?.utf8Text ?? (lastMessage!.contents.first(where: {$0.isFile == true || $0.isFileTransfer == true})?.name ?? ""))
|
||||
var lastMessageIconTmp = ""
|
||||
var lastMessageInItalicTmp = false
|
||||
|
||||
if lastMessage!.contents.first != nil && lastMessage!.contents.first!.isIcalendar == true {
|
||||
|
|
@ -314,6 +320,8 @@ class ConversationModel: ObservableObject, Identifiable {
|
|||
lastMessageTextTmp = String(localized: "message_meeting_invitation_cancelled_notification")
|
||||
}
|
||||
|
||||
lastMessageIconTmp = "calendar"
|
||||
|
||||
lastMessageInItalicTmp = true
|
||||
}
|
||||
}
|
||||
|
|
@ -322,9 +330,19 @@ class ConversationModel: ObservableObject, Identifiable {
|
|||
if lastMessage!.isRetracted {
|
||||
lastMessageTextTmp += lastMessage!.isOutgoing ? String(localized: "conversation_message_content_deleted_by_us_label") : String(localized: "conversation_message_content_deleted_label")
|
||||
|
||||
lastMessageIconTmp = "trash"
|
||||
|
||||
lastMessageInItalicTmp = true
|
||||
}
|
||||
|
||||
if (lastMessage!.contents.first(where: {$0.isFile == true || $0.isFileTransfer == true})?.name != nil) {
|
||||
lastMessageIconTmp = "file"
|
||||
} else if lastMessage!.isReply {
|
||||
lastMessageIconTmp = "reply"
|
||||
} else if lastMessage!.isForward {
|
||||
lastMessageIconTmp = "forward"
|
||||
}
|
||||
|
||||
let lastMessageIsOutgoingTmp = lastMessage?.isOutgoing ?? false
|
||||
|
||||
let lastUpdateTimeTmp = lastMessage?.time ?? chatRoom.lastUpdateTime
|
||||
|
|
@ -332,7 +350,11 @@ class ConversationModel: ObservableObject, Identifiable {
|
|||
let lastMessageStateTmp = lastMessage?.state.rawValue ?? 0
|
||||
|
||||
DispatchQueue.main.async {
|
||||
self.lastMessagePrefixText = lastMessagePrefixTextTmp
|
||||
|
||||
self.lastMessageText = lastMessageTextTmp
|
||||
|
||||
self.lastMessageIcon = lastMessageIconTmp
|
||||
|
||||
self.lastMessageIsOutgoing = lastMessageIsOutgoingTmp
|
||||
|
||||
|
|
|
|||
|
|
@ -89,20 +89,16 @@ class ConversationsListViewModel: ObservableObject {
|
|||
fromAddressFriend = nil
|
||||
}
|
||||
|
||||
var lastMessageTextTmp = (fromAddressFriend ?? "") + (lastMessage.contents.first(where: { $0.isText })?.utf8Text ?? (lastMessage.contents.first(where: { $0.isFile || $0.isFileTransfer })?.name ?? ""))
|
||||
|
||||
if lastMessage.isRetracted {
|
||||
lastMessageTextTmp += lastMessage.isOutgoing ? String(localized: "conversation_message_content_deleted_by_us_label") : String(localized: "conversation_message_content_deleted_label")
|
||||
}
|
||||
let lastMessagePrefixTextTmp = (fromAddressFriend ?? "")
|
||||
|
||||
if let index = self.conversationsList.firstIndex(where: { $0.chatRoom === conversationModel.chatRoom }) {
|
||||
DispatchQueue.main.async {
|
||||
conversationModel.lastMessageText = lastMessageTextTmp
|
||||
self.conversationsList[index].lastMessageText = lastMessageTextTmp
|
||||
conversationModel.lastMessagePrefixText = lastMessagePrefixTextTmp
|
||||
self.conversationsList[index].lastMessagePrefixText = lastMessagePrefixTextTmp
|
||||
}
|
||||
} else {
|
||||
DispatchQueue.main.async {
|
||||
conversationModel.lastMessageText = lastMessageTextTmp
|
||||
conversationModel.lastMessagePrefixText = lastMessagePrefixTextTmp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -152,20 +148,16 @@ class ConversationsListViewModel: ObservableObject {
|
|||
fromAddressFriend = nil
|
||||
}
|
||||
|
||||
var lastMessageTextTmp = (fromAddressFriend ?? "") + (lastMessage.contents.first(where: { $0.isText })?.utf8Text ?? (lastMessage.contents.first(where: { $0.isFile || $0.isFileTransfer })?.name ?? ""))
|
||||
|
||||
if lastMessage.isRetracted {
|
||||
lastMessageTextTmp += lastMessage.isOutgoing ? String(localized: "conversation_message_content_deleted_by_us_label") : String(localized: "conversation_message_content_deleted_label")
|
||||
}
|
||||
let lastMessagePrefixTextTmp = (fromAddressFriend ?? "")
|
||||
|
||||
if let index = self.conversationsList.firstIndex(where: { $0.chatRoom === conversationModel.chatRoom }) {
|
||||
DispatchQueue.main.async {
|
||||
conversationModel.lastMessageText = lastMessageTextTmp
|
||||
self.conversationsList[index].lastMessageText = lastMessageTextTmp
|
||||
conversationModel.lastMessagePrefixText = lastMessagePrefixTextTmp
|
||||
self.conversationsList[index].lastMessagePrefixText = lastMessagePrefixTextTmp
|
||||
}
|
||||
} else {
|
||||
DispatchQueue.main.async {
|
||||
conversationModel.lastMessageText = lastMessageTextTmp
|
||||
conversationModel.lastMessagePrefixText = lastMessagePrefixTextTmp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue