diff --git a/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift b/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift index 8d1cc607d..13af8ca86 100644 --- a/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift +++ b/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift @@ -1100,10 +1100,10 @@ struct ConversationFragment: View { Button { let indexMessage = conversationViewModel.conversationMessagesSection[0].rows.firstIndex(where: {$0.message.id == conversationViewModel.selectedMessage!.message.id}) conversationViewModel.selectedMessage = nil - if !isMessageTextFocused { - isMessageTextFocused = true - } - conversationViewModel.replyToMessage(index: indexMessage ?? 0, isMessageTextFocused: isMessageTextFocused) + conversationViewModel.replyToMessage(index: indexMessage ?? 0, isMessageTextFocused: Binding( + get: { isMessageTextFocused }, + set: { isMessageTextFocused = $0 } + )) } label: { HStack { Text("menu_reply_to_chat_message") diff --git a/Linphone/UI/Main/Conversations/Fragments/UIList.swift b/Linphone/UI/Main/Conversations/Fragments/UIList.swift index 8d0015c3d..7179f78a8 100644 --- a/Linphone/UI/Main/Conversations/Fragments/UIList.swift +++ b/Linphone/UI/Main/Conversations/Fragments/UIList.swift @@ -503,10 +503,10 @@ struct UIList: UIViewRepresentable { func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { let archiveAction = UIContextualAction(style: .normal, title: "") { _, _, completionHandler in - if !self.parent.isMessageTextFocused { - self.parent.isMessageTextFocused = true - } - self.parent.conversationViewModel.replyToMessage(index: indexPath.row, isMessageTextFocused: self.parent.isMessageTextFocused) + self.parent.conversationViewModel.replyToMessage(index: indexPath.row, isMessageTextFocused: Binding( + get: { self.parent.isMessageTextFocused }, + set: { self.parent.isMessageTextFocused = $0 } + )) completionHandler(true) } diff --git a/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift b/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift index cc2b4064a..c48cc1a53 100644 --- a/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift +++ b/Linphone/UI/Main/Conversations/ViewModel/ConversationViewModel.swift @@ -1547,14 +1547,15 @@ class ConversationViewModel: ObservableObject { conversationMessagesSection = [] } - func replyToMessage(index: Int, isMessageTextFocused: Bool) { + func replyToMessage(index: Int, isMessageTextFocused: Binding) { coreContext.doOnCoreQueue { _ in let messageToReplyTmp = self.conversationMessagesSection[0].rows[index] - DispatchQueue.main.asyncAfter(deadline: .now() + (isMessageTextFocused ? 0 : 0.22)){ + DispatchQueue.main.async { withAnimation(.linear(duration: 0.15)) { self.messageToReply = messageToReplyTmp } - } + isMessageTextFocused.wrappedValue = true + } } }