forked from shadowfacts/Tusker
Prevent inserting extra whitespace when autocompleting
This commit is contained in:
parent
58c6d508ec
commit
0687c040a0
|
@ -73,7 +73,7 @@ struct ComposeAutocompleteMentionsView: View {
|
||||||
HStack(spacing: 8) {
|
HStack(spacing: 8) {
|
||||||
ForEach(accounts, id: \.id) { (account) in
|
ForEach(accounts, id: \.id) { (account) in
|
||||||
Button {
|
Button {
|
||||||
uiState.autocompleteHandler?.autocomplete(with: "@\(account.acct) ")
|
uiState.autocompleteHandler?.autocomplete(with: "@\(account.acct)")
|
||||||
} label: {
|
} label: {
|
||||||
HStack(spacing: 4) {
|
HStack(spacing: 4) {
|
||||||
ComposeAvatarImageView(url: account.avatar)
|
ComposeAvatarImageView(url: account.avatar)
|
||||||
|
@ -210,7 +210,7 @@ struct ComposeAutocompleteEmojisView: View {
|
||||||
HStack(spacing: 8) {
|
HStack(spacing: 8) {
|
||||||
ForEach(emojis, id: \.shortcode) { (emoji) in
|
ForEach(emojis, id: \.shortcode) { (emoji) in
|
||||||
Button {
|
Button {
|
||||||
uiState.autocompleteHandler?.autocomplete(with: ":\(emoji.shortcode): ")
|
uiState.autocompleteHandler?.autocomplete(with: ":\(emoji.shortcode):")
|
||||||
} label: {
|
} label: {
|
||||||
HStack(spacing: 4) {
|
HStack(spacing: 4) {
|
||||||
CustomEmojiImageView(emoji: emoji)
|
CustomEmojiImageView(emoji: emoji)
|
||||||
|
@ -266,7 +266,7 @@ struct ComposeAutocompleteHashtagsView: View {
|
||||||
HStack(spacing: 8) {
|
HStack(spacing: 8) {
|
||||||
ForEach(hashtags, id: \.name) { (hashtag) in
|
ForEach(hashtags, id: \.name) { (hashtag) in
|
||||||
Button {
|
Button {
|
||||||
uiState.autocompleteHandler?.autocomplete(with: "#\(hashtag.name) ")
|
uiState.autocompleteHandler?.autocomplete(with: "#\(hashtag.name)")
|
||||||
} label: {
|
} label: {
|
||||||
Text(verbatim: "#\(hashtag.name)")
|
Text(verbatim: "#\(hashtag.name)")
|
||||||
.foregroundColor(Color(UIColor.label))
|
.foregroundColor(Color(UIColor.label))
|
||||||
|
|
|
@ -75,6 +75,15 @@ struct ComposeContentWarningTextField: UIViewRepresentable {
|
||||||
let selectedRangeStartUTF16 = textField.offset(from: textField.beginningOfDocument, to: selectedRange.start)
|
let selectedRangeStartUTF16 = textField.offset(from: textField.beginningOfDocument, to: selectedRange.start)
|
||||||
let characterBeforeCursorIndex = text.utf16.index(text.startIndex, offsetBy: selectedRangeStartUTF16)
|
let characterBeforeCursorIndex = text.utf16.index(text.startIndex, offsetBy: selectedRangeStartUTF16)
|
||||||
|
|
||||||
|
let insertSpace: Bool
|
||||||
|
if text.distance(from: characterBeforeCursorIndex, to: text.endIndex) > 0 {
|
||||||
|
let charAfterCursor = text[text.index(after: characterBeforeCursorIndex)]
|
||||||
|
insertSpace = charAfterCursor != " " && charAfterCursor != "\n"
|
||||||
|
} else {
|
||||||
|
insertSpace = true
|
||||||
|
}
|
||||||
|
let string = insertSpace ? string + " " : string
|
||||||
|
|
||||||
textField.text!.replaceSubrange(lastWordStartIndex..<characterBeforeCursorIndex, with: string)
|
textField.text!.replaceSubrange(lastWordStartIndex..<characterBeforeCursorIndex, with: string)
|
||||||
didChange(textField)
|
didChange(textField)
|
||||||
|
|
||||||
|
|
|
@ -243,6 +243,15 @@ struct MainComposeWrappedTextView: UIViewRepresentable {
|
||||||
|
|
||||||
let characterBeforeCursorIndex = text.utf16.index(text.startIndex, offsetBy: textView.selectedRange.upperBound)
|
let characterBeforeCursorIndex = text.utf16.index(text.startIndex, offsetBy: textView.selectedRange.upperBound)
|
||||||
|
|
||||||
|
let insertSpace: Bool
|
||||||
|
if text.distance(from: characterBeforeCursorIndex, to: text.endIndex) > 0 {
|
||||||
|
let charAfterCursor = text[text.index(after: characterBeforeCursorIndex)]
|
||||||
|
insertSpace = charAfterCursor != " " && charAfterCursor != "\n"
|
||||||
|
} else {
|
||||||
|
insertSpace = true
|
||||||
|
}
|
||||||
|
let string = insertSpace ? string + " " : string
|
||||||
|
|
||||||
textView.text.replaceSubrange(lastWordStartIndex..<characterBeforeCursorIndex, with: string)
|
textView.text.replaceSubrange(lastWordStartIndex..<characterBeforeCursorIndex, with: string)
|
||||||
self.textViewDidChange(textView)
|
self.textViewDidChange(textView)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue