From 707f8aa3b993f19ad5e56ce20ecc839fa43c62c8 Mon Sep 17 00:00:00 2001 From: Benoit Martins Date: Tue, 15 Jul 2025 12:15:57 +0200 Subject: [PATCH] Add message resend feature --- .../Fragments/ConversationFragment.swift | 22 +++++++++++++++++++ .../ViewModel/ConversationViewModel.swift | 10 +++++++++ 2 files changed, 32 insertions(+) diff --git a/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift b/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift index 5a17eb6ea..76d608f77 100644 --- a/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift +++ b/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift @@ -1021,6 +1021,28 @@ struct ConversationFragment: View { } VStack { + if conversationViewModel.selectedMessage!.message.status == .error { + Button { + conversationViewModel.resendMessage(chatMessage: conversationViewModel.selectedMessage!) + conversationViewModel.selectedMessage = nil + } label: { + HStack { + Text("menu_resend_chat_message") + .default_text_style(styleSize: 15) + Spacer() + + Image("paper-plane-tilt") + .resizable() + .frame(width: 20, height: 20, alignment: .leading) + .rotationEffect(.degrees(45)) + } + .padding(.vertical, 5) + .padding(.horizontal, 20) + } + + Divider() + } + if !(CoreContext.shared.imdnToEverybodyThreshold && !conversationViewModel.selectedMessage!.message.isOutgoing) { Button { conversationViewModel.selectedMessageToDisplayDetails = conversationViewModel.selectedMessage diff --git a/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift b/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift index cfe860eb0..69ef5d267 100644 --- a/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift +++ b/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift @@ -1558,6 +1558,16 @@ class ConversationViewModel: ObservableObject { } } + func resendMessage(chatMessage: EventLogMessage) { + coreContext.doOnCoreQueue { _ in + if let message = chatMessage.eventModel.eventLog.chatMessage { + if message.state == .NotDelivered { + message.send() + } + } + } + } + func scrollToMessage(message: Message) { coreContext.doOnCoreQueue { _ in if message.replyMessage != nil {