mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
Fix message completion trigger to work anywhere in the message (#3696)
* Fix message completion trigger to work anywhere in the message * Add tests for display suggestion in difference message positions * Fix suggestion trigger could support multiple mention symbol * Remove optional parameter type and tweak argument name to hide * Optimize the suggestions trigger using regex * Fix the cursor at wrong position after selected suggestion * Modify the rawSuggestionText pass data in right way * Modify mention symbol to use regex type * Update ElementX/Sources/Screens/RoomScreen/ComposerToolbar/CompletionSuggestionService.swift Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com> * Update generated mock --------- Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
This commit is contained in:
@@ -5130,15 +5130,15 @@ class CompletionSuggestionServiceMock: CompletionSuggestionServiceProtocol, @unc
|
||||
|
||||
//MARK: - processTextMessage
|
||||
|
||||
var processTextMessageUnderlyingCallsCount = 0
|
||||
var processTextMessageCallsCount: Int {
|
||||
var processTextMessageSelectedRangeUnderlyingCallsCount = 0
|
||||
var processTextMessageSelectedRangeCallsCount: Int {
|
||||
get {
|
||||
if Thread.isMainThread {
|
||||
return processTextMessageUnderlyingCallsCount
|
||||
return processTextMessageSelectedRangeUnderlyingCallsCount
|
||||
} else {
|
||||
var returnValue: Int? = nil
|
||||
DispatchQueue.main.sync {
|
||||
returnValue = processTextMessageUnderlyingCallsCount
|
||||
returnValue = processTextMessageSelectedRangeUnderlyingCallsCount
|
||||
}
|
||||
|
||||
return returnValue!
|
||||
@@ -5146,28 +5146,28 @@ class CompletionSuggestionServiceMock: CompletionSuggestionServiceProtocol, @unc
|
||||
}
|
||||
set {
|
||||
if Thread.isMainThread {
|
||||
processTextMessageUnderlyingCallsCount = newValue
|
||||
processTextMessageSelectedRangeUnderlyingCallsCount = newValue
|
||||
} else {
|
||||
DispatchQueue.main.sync {
|
||||
processTextMessageUnderlyingCallsCount = newValue
|
||||
processTextMessageSelectedRangeUnderlyingCallsCount = newValue
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
var processTextMessageCalled: Bool {
|
||||
return processTextMessageCallsCount > 0
|
||||
var processTextMessageSelectedRangeCalled: Bool {
|
||||
return processTextMessageSelectedRangeCallsCount > 0
|
||||
}
|
||||
var processTextMessageReceivedTextMessage: String?
|
||||
var processTextMessageReceivedInvocations: [String?] = []
|
||||
var processTextMessageClosure: ((String?) -> Void)?
|
||||
var processTextMessageSelectedRangeReceivedArguments: (textMessage: String, selectedRange: NSRange)?
|
||||
var processTextMessageSelectedRangeReceivedInvocations: [(textMessage: String, selectedRange: NSRange)] = []
|
||||
var processTextMessageSelectedRangeClosure: ((String, NSRange) -> Void)?
|
||||
|
||||
func processTextMessage(_ textMessage: String?) {
|
||||
processTextMessageCallsCount += 1
|
||||
processTextMessageReceivedTextMessage = textMessage
|
||||
func processTextMessage(_ textMessage: String, selectedRange: NSRange) {
|
||||
processTextMessageSelectedRangeCallsCount += 1
|
||||
processTextMessageSelectedRangeReceivedArguments = (textMessage: textMessage, selectedRange: selectedRange)
|
||||
DispatchQueue.main.async {
|
||||
self.processTextMessageReceivedInvocations.append(textMessage)
|
||||
self.processTextMessageSelectedRangeReceivedInvocations.append((textMessage: textMessage, selectedRange: selectedRange))
|
||||
}
|
||||
processTextMessageClosure?(textMessage)
|
||||
processTextMessageSelectedRangeClosure?(textMessage, selectedRange)
|
||||
}
|
||||
//MARK: - setSuggestionTrigger
|
||||
|
||||
|
||||
Reference in New Issue
Block a user