Skip to content

Commit 2233d00

Browse files
committed
Replace UITextInteraction API with UITextItem ones
1 parent af7a7e4 commit 2233d00

File tree

4 files changed

+53
-22
lines changed

4 files changed

+53
-22
lines changed

WordPress/Classes/ViewRelated/Activity/Details/ActivityFormattableContentView.swift

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,28 @@ struct ActivityFormattableContentView: UIViewRepresentable {
5757
super.init()
5858
}
5959

60-
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
61-
guard interaction == .invokeDefaultAction else {
62-
return false
60+
func textView(_ textView: UITextView, primaryActionFor textItem: UITextItem, defaultAction: UIAction) -> UIAction? {
61+
guard case let .link(URL) = textItem.content else {
62+
return nil
6363
}
6464

65+
return UIAction { [weak self] _ in
66+
self?.routeTo(URL)
67+
}
68+
}
69+
70+
func textView(_ textView: UITextView, menuConfigurationFor textItem: UITextItem, defaultMenu: UIMenu) -> UITextItem.MenuConfiguration? {
71+
if case .link = textItem.content {
72+
return nil
73+
}
74+
75+
return .init(menu: defaultMenu)
76+
}
77+
78+
private func routeTo(_ URL: URL) {
6579
// Get the top view controller to create content coordinator
6680
guard let viewController = UIViewController.topViewController else {
67-
return false
81+
return
6882
}
6983

7084
let contentCoordinator = DefaultContentCoordinator(
@@ -78,8 +92,6 @@ struct ActivityFormattableContentView: UIViewRepresentable {
7892
)
7993

8094
router.routeTo(URL)
81-
82-
return false
8395
}
8496
}
8597
}

WordPress/Classes/ViewRelated/Cells/ExpandableCell.swift

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,21 @@ class ExpandableCell: WPReusableTableViewCell, NibLoadable {
7676
}
7777

7878
extension ExpandableCell: UITextViewDelegate {
79-
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
80-
switch interaction {
81-
case .invokeDefaultAction:
82-
urlCallback?(URL)
83-
return false
84-
case .preview, .presentActions:
85-
return true
86-
@unknown default:
87-
fatalError()
79+
func textView(_ textView: UITextView, primaryActionFor textItem: UITextItem, defaultAction: UIAction) -> UIAction? {
80+
guard case let .link(URL) = textItem.content else {
81+
return defaultAction
8882
}
83+
84+
return UIAction { [weak self] _ in
85+
self?.urlCallback?(URL)
86+
}
87+
}
88+
89+
func textView(_ textView: UITextView, menuConfigurationFor textItem: UITextItem, defaultMenu: UIMenu) -> UITextItem.MenuConfiguration? {
90+
if case .link = textItem.content {
91+
return nil
92+
}
93+
94+
return .init(menu: defaultMenu)
8995
}
9096
}

WordPress/Classes/ViewRelated/Notifications/Views/NoteBlockTextTableViewCell.swift

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,22 @@ class NoteBlockTextTableViewCell: NoteBlockTableViewCell, RichTextViewDataSource
119119

120120
// MARK: - RichTextView Data Source
121121

122-
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
123-
onUrlClick?(URL)
124-
return false
122+
func textView(_ textView: UITextView, primaryActionFor textItem: UITextItem, defaultAction: UIAction) -> UIAction? {
123+
guard case let .link(URL) = textItem.content else {
124+
return nil
125+
}
126+
127+
return UIAction { [weak self] _ in
128+
self?.onUrlClick?(URL)
129+
}
130+
}
131+
132+
func textView(_ textView: UITextView, menuConfigurationFor textItem: UITextItem, defaultMenu: UIMenu) -> UITextItem.MenuConfiguration? {
133+
if case .link = textItem.content {
134+
return nil
135+
}
136+
137+
return .init(menu: defaultMenu)
125138
}
126139

127140
func textView(_ textView: UITextView, didPressLink link: URL) {

WordPress/Classes/ViewRelated/Views/RichTextView/RichTextView.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -259,12 +259,12 @@ import UniformTypeIdentifiers
259259
delegate?.textViewDidChangeSelection?(textView)
260260
}
261261

262-
open func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
263-
return delegate?.textView?(textView, shouldInteractWith: URL, in: characterRange, interaction: interaction) ?? true
262+
open func textView(_ textView: UITextView, primaryActionFor textItem: UITextItem, defaultAction: UIAction) -> UIAction? {
263+
delegate?.textView?(textView, primaryActionFor: textItem, defaultAction: defaultAction)
264264
}
265265

266-
open func textView(_ textView: UITextView, shouldInteractWith textAttachment: NSTextAttachment, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
267-
return delegate?.textView?(textView, shouldInteractWith: textAttachment, in: characterRange, interaction: interaction) ?? true
266+
public func textView(_ textView: UITextView, menuConfigurationFor textItem: UITextItem, defaultMenu: UIMenu) -> UITextItem.MenuConfiguration? {
267+
delegate?.textView?(textView, menuConfigurationFor: textItem, defaultMenu: defaultMenu)
268268
}
269269

270270
// MARK: - Private Properites

0 commit comments

Comments
 (0)