Stop composing when the user stops typing

This commit is contained in:
Benoit Martins 2025-11-26 10:32:39 +01:00
parent 7bdb8fa92d
commit 5d13a2b49d
2 changed files with 19 additions and 9 deletions

View file

@ -234,6 +234,8 @@ struct ConversationFragment: View {
if SharedMainViewModel.shared.displayedConversation != nil && (navigationManager.peerAddr == nil || navigationManager.peerAddr!.contains(SharedMainViewModel.shared.displayedConversation!.remoteSipUri)) {
conversationViewModel.resetDisplayedChatRoom()
}
} else {
conversationViewModel.compose(stop: true, cachedConversation: cachedConversation)
}
}
}
@ -461,6 +463,7 @@ struct ConversationFragment: View {
}
}
.onDisappear {
conversationViewModel.compose(stop: true, cachedConversation: cachedConversation)
conversationViewModel.resetMessage()
}
} else {
@ -556,6 +559,7 @@ struct ConversationFragment: View {
conversationViewModel.getMessages()
}
.onDisappear {
conversationViewModel.compose(stop: true, cachedConversation: cachedConversation)
conversationViewModel.resetMessage()
}
}
@ -885,9 +889,7 @@ struct ConversationFragment: View {
.focused($isMessageTextFocused)
.padding(.vertical, 5)
.onChange(of: messageText) { text in
if !text.isEmpty {
conversationViewModel.compose()
}
conversationViewModel.compose(stop: text.isEmpty)
}
} else {
ZStack(alignment: .leading) {
@ -898,9 +900,7 @@ struct ConversationFragment: View {
.default_text_style(styleSize: 15)
.focused($isMessageTextFocused)
.onChange(of: messageText) { text in
if !text.isEmpty {
conversationViewModel.compose()
}
conversationViewModel.compose(stop: text.isEmpty)
}
if messageText.isEmpty {

View file

@ -2608,10 +2608,20 @@ class ConversationViewModel: ObservableObject {
}
}
func compose() {
func compose(stop: Bool, cachedConversation: ConversationModel? = nil) {
coreContext.doOnCoreQueue { _ in
if self.sharedMainViewModel.displayedConversation != nil {
self.sharedMainViewModel.displayedConversation!.chatRoom.compose()
if let displayedConversation = self.sharedMainViewModel.displayedConversation {
if stop {
displayedConversation.chatRoom.stopComposing()
} else {
displayedConversation.chatRoom.composeTextMessage()
}
} else if let displayedConversation = cachedConversation {
if stop {
displayedConversation.chatRoom.stopComposing()
} else {
displayedConversation.chatRoom.composeTextMessage()
}
}
}
}