From d04f9615599f554bf86eb8e3b5d28e90d3d3280d Mon Sep 17 00:00:00 2001 From: Christophe Deschamps Date: Thu, 3 Nov 2022 14:14:08 +0100 Subject: [PATCH] Handle ICSs in chat list last message --- Classes/LinphoneUI/UIChatCell.m | 3 +- .../Conference/Views/ICSBubbleView.swift | 29 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/Classes/LinphoneUI/UIChatCell.m b/Classes/LinphoneUI/UIChatCell.m index 0d6330496..6f67b5793 100644 --- a/Classes/LinphoneUI/UIChatCell.m +++ b/Classes/LinphoneUI/UIChatCell.m @@ -137,7 +137,8 @@ _chatContentLabel.frame = newFrame; } } else { - NSString *text = [[FastAddressBook displayNameForAddress:linphone_chat_message_get_from_address(last_msg)] + NSString *conferenceInfo = [ICSBubbleView getConferenceSummaryWithCmessage:last_msg]; + NSString *text = conferenceInfo != nil ? conferenceInfo : [[FastAddressBook displayNameForAddress:linphone_chat_message_get_from_address(last_msg)] stringByAppendingFormat:@" : %@", [UIChatBubbleTextCell TextMessageForChat:last_msg]]; // shorten long messages /*if ([text length] > 50) diff --git a/Classes/Swift/Conference/Views/ICSBubbleView.swift b/Classes/Swift/Conference/Views/ICSBubbleView.swift index e622537d8..2fa1e4663 100644 --- a/Classes/Swift/Conference/Views/ICSBubbleView.swift +++ b/Classes/Swift/Conference/Views/ICSBubbleView.swift @@ -196,6 +196,35 @@ import EventKitUI return subject } + @objc static func getConferenceInfo(cmessage: OpaquePointer) -> OpaquePointer? { + let message = ChatMessage.getSwiftObject(cObject: cmessage) + var result : OpaquePointer? = nil + message.contents.forEach { content in + if (content.isIcalendar) { + if let conferenceInfo = try? Factory.Instance.createConferenceInfoFromIcalendarContent(content: content) { + result = conferenceInfo.getCobject + } + } + } + return result + } + + @objc static func getConferenceSummary(cmessage: OpaquePointer) -> String? { + let message = ChatMessage.getSwiftObject(cObject: cmessage) + var subject:String? = nil + message.contents.forEach { content in + if (content.isIcalendar) { + if let conferenceInfo = try? Factory.Instance.createConferenceInfoFromIcalendarContent(content: content) { + subject = conferenceInfo.state == .New ? VoipTexts.conference_invite_title + conferenceInfo.subject : + conferenceInfo.state == .Updated ? VoipTexts.conference_update_title + conferenceInfo.subject : + VoipTexts.conference_cancel_title + conferenceInfo.subject + } + } + } + return subject + } + + @objc static func getDescriptionHeightFromContent(cmessage: OpaquePointer) -> CGFloat { let message = ChatMessage.getSwiftObject(cObject: cmessage) var height = 0.0