diff --git a/TelegramUI/ChannelInfoController.swift b/TelegramUI/ChannelInfoController.swift index 5433479f9b..a594a95d72 100644 --- a/TelegramUI/ChannelInfoController.swift +++ b/TelegramUI/ChannelInfoController.swift @@ -315,7 +315,7 @@ private enum ChannelInfoEntry: ItemListNodeEntry { arguments.openChannelTypeSetup() }) case let .channelDescriptionSetup(theme, placeholder, value): - return ItemListMultilineInputItem(theme: theme, text: value, placeholder: placeholder, maxLength: 1000, sectionId: self.section, style: .plain, textUpdated: { updatedText in + return ItemListMultilineInputItem(theme: theme, text: value, placeholder: placeholder, maxLength: 255, sectionId: self.section, style: .plain, textUpdated: { updatedText in arguments.updateEditingDescriptionText(updatedText) }, action: { diff --git a/TelegramUI/CreateChannelController.swift b/TelegramUI/CreateChannelController.swift index 783f759df6..84c820f792 100644 --- a/TelegramUI/CreateChannelController.swift +++ b/TelegramUI/CreateChannelController.swift @@ -132,7 +132,7 @@ private enum CreateChannelEntry: ItemListNodeEntry { arguments.changeProfilePhoto() }) case let .descriptionSetup(theme, text, value): - return ItemListMultilineInputItem(theme: theme, text: value, placeholder: text, maxLength: 1000, sectionId: self.section, style: .blocks, textUpdated: { updatedText in + return ItemListMultilineInputItem(theme: theme, text: value, placeholder: text, maxLength: 255, sectionId: self.section, style: .blocks, textUpdated: { updatedText in arguments.updateEditingDescriptionText(updatedText) }, action: { @@ -214,7 +214,7 @@ public func createChannelController(account: Account) -> ViewController { }, updateEditingDescriptionText: { text in updateState { current in var current = current - current.editingDescriptionText = text + current.editingDescriptionText = String(text.prefix(255)) return current } }, done: { diff --git a/TelegramUI/GroupInfoController.swift b/TelegramUI/GroupInfoController.swift index 47d66e5a54..2fdb504a97 100644 --- a/TelegramUI/GroupInfoController.swift +++ b/TelegramUI/GroupInfoController.swift @@ -480,7 +480,7 @@ private enum GroupInfoEntry: ItemListNodeEntry { arguments.presentController(channelVisibilityController(account: arguments.account, peerId: arguments.peerId, mode: .generic), ViewControllerPresentationArguments(presentationAnimation: ViewControllerPresentationAnimation.modalSheet)) }) case let .groupDescriptionSetup(theme, placeholder, text): - return ItemListMultilineInputItem(theme: theme, text: text, placeholder: placeholder, maxLength: 1000, sectionId: self.section, style: .blocks, textUpdated: { updatedText in + return ItemListMultilineInputItem(theme: theme, text: text, placeholder: placeholder, maxLength: 255, sectionId: self.section, style: .blocks, textUpdated: { updatedText in arguments.updateEditingDescriptionText(updatedText) }, action: { diff --git a/TelegramUI/ItemListMultilineInputItem.swift b/TelegramUI/ItemListMultilineInputItem.swift index ba70c49ca9..0eb744967d 100644 --- a/TelegramUI/ItemListMultilineInputItem.swift +++ b/TelegramUI/ItemListMultilineInputItem.swift @@ -100,6 +100,7 @@ class ItemListMultilineInputItemNode: ListViewItemNode, ASEditableTextNodeDelega self.textClippingNode.addSubnode(self.textNode) self.addSubnode(self.textClippingNode) + } override func didLoad() { @@ -290,6 +291,22 @@ class ItemListMultilineInputItemNode: ListViewItemNode, ASEditableTextNodeDelega } } + func editableTextNodeShouldPaste(_ editableTextNode: ASEditableTextNode) -> Bool { + if let item = self.item { + var text: String? = UIPasteboard.general.string + if let text = text { + if let maxLength = item.maxLength { + let string = self.textNode.attributedText?.string ?? "" + if string.count + text.count > maxLength { + UIPasteboard.general.string = String(text[..