Fix keyboard when replying to a message

This commit is contained in:
Benoit Martins 2025-07-29 00:09:54 +02:00
parent 5b4d1bee69
commit 19eb44882f
3 changed files with 12 additions and 11 deletions

View file

@ -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")

View file

@ -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)
}

View file

@ -1547,14 +1547,15 @@ class ConversationViewModel: ObservableObject {
conversationMessagesSection = []
}
func replyToMessage(index: Int, isMessageTextFocused: Bool) {
func replyToMessage(index: Int, isMessageTextFocused: Binding<Bool>) {
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
}
}
}