mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-11-07 01:10:09 +00:00
Fix imported sticker pack link autoformatting
This commit is contained in:
parent
3ad48b7550
commit
21b8a066c2
@ -204,6 +204,14 @@ private class TextField: UITextField, UIScrollViewDelegate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private let validIdentifierSet: CharacterSet = {
|
||||||
|
var set = CharacterSet(charactersIn: "a".unicodeScalars.first! ... "z".unicodeScalars.first!)
|
||||||
|
set.insert(charactersIn: "A".unicodeScalars.first! ... "Z".unicodeScalars.first!)
|
||||||
|
set.insert(charactersIn: "0".unicodeScalars.first! ... "9".unicodeScalars.first!)
|
||||||
|
set.insert("_")
|
||||||
|
return set
|
||||||
|
}()
|
||||||
|
|
||||||
private final class ImportStickerPackTitleInputFieldNode: ASDisplayNode, UITextFieldDelegate {
|
private final class ImportStickerPackTitleInputFieldNode: ASDisplayNode, UITextFieldDelegate {
|
||||||
private var theme: PresentationTheme
|
private var theme: PresentationTheme
|
||||||
private let backgroundNode: ASImageNode
|
private let backgroundNode: ASImageNode
|
||||||
@ -260,7 +268,6 @@ private final class ImportStickerPackTitleInputFieldNode: ASDisplayNode, UITextF
|
|||||||
self.textInputNode.typingAttributes = [NSAttributedString.Key.font: Font.regular(14.0), NSAttributedString.Key.foregroundColor: theme.actionSheet.inputTextColor]
|
self.textInputNode.typingAttributes = [NSAttributedString.Key.font: Font.regular(14.0), NSAttributedString.Key.foregroundColor: theme.actionSheet.inputTextColor]
|
||||||
self.textInputNode.clipsToBounds = true
|
self.textInputNode.clipsToBounds = true
|
||||||
self.textInputNode.placeholderString = NSAttributedString(string: placeholder, font: Font.regular(14.0), textColor: theme.actionSheet.secondaryTextColor)
|
self.textInputNode.placeholderString = NSAttributedString(string: placeholder, font: Font.regular(14.0), textColor: theme.actionSheet.secondaryTextColor)
|
||||||
// self.textInputNode.textContainerInset = UIEdgeInsets(top: self.inputInsets.top, left: 0.0, bottom: self.inputInsets.bottom, right: 0.0)
|
|
||||||
self.textInputNode.keyboardAppearance = theme.rootController.keyboardColor.keyboardAppearance
|
self.textInputNode.keyboardAppearance = theme.rootController.keyboardColor.keyboardAppearance
|
||||||
self.textInputNode.keyboardType = keyboardType
|
self.textInputNode.keyboardType = keyboardType
|
||||||
self.textInputNode.autocapitalizationType = .sentences
|
self.textInputNode.autocapitalizationType = .sentences
|
||||||
@ -358,6 +365,39 @@ private final class ImportStickerPackTitleInputFieldNode: ASDisplayNode, UITextF
|
|||||||
self.complete?()
|
self.complete?()
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if self.textInputNode.keyboardType == .asciiCapable {
|
||||||
|
var cleanString = string.folding(options: .diacriticInsensitive, locale: .current).replacingOccurrences(of: " ", with: "_")
|
||||||
|
|
||||||
|
let filtered = cleanString.unicodeScalars.filter { validIdentifierSet.contains($0) }
|
||||||
|
let filteredString = String(String.UnicodeScalarView(filtered))
|
||||||
|
|
||||||
|
if cleanString != filteredString {
|
||||||
|
cleanString = filteredString
|
||||||
|
|
||||||
|
self.textInputNode.layer.addShakeAnimation()
|
||||||
|
let hapticFeedback = HapticFeedback()
|
||||||
|
hapticFeedback.error()
|
||||||
|
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1.0, execute: {
|
||||||
|
let _ = hapticFeedback
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if cleanString != string {
|
||||||
|
var text = textField.text ?? ""
|
||||||
|
text.replaceSubrange(text.index(text.startIndex, offsetBy: range.lowerBound) ..< text.index(text.startIndex, offsetBy: range.upperBound), with: cleanString)
|
||||||
|
textField.text = text
|
||||||
|
if let startPosition = textField.position(from: textField.beginningOfDocument, offset: range.lowerBound + cleanString.count) {
|
||||||
|
let selectionRange = textField.textRange(from: startPosition, to: startPosition)
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
textField.selectedTextRange = selectionRange
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.textFieldDidUpdateText(text)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
self.textFieldDidUpdateText(updatedText)
|
self.textFieldDidUpdateText(updatedText)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user