Skip to content

Commit

Permalink
Add image button action support
Browse files Browse the repository at this point in the history
  • Loading branch information
tonisevener committed Jan 6, 2024
1 parent a2d80e7 commit c6a3cad
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -98,4 +98,13 @@ extension WKSourceEditorFormatterLink {
}
}
}

func insertImage(wikitext: String, in textView: UITextView) {

guard let selectedTextRange = textView.selectedTextRange else {
return
}

textView.replace(selectedTextRange, withText: wikitext)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ public protocol WKSourceEditorViewControllerDelegate: AnyObject {
func sourceEditorViewControllerDidTapFind(sourceEditorViewController: WKSourceEditorViewController)
func sourceEditorViewControllerDidRemoveFindInputAccessoryView(sourceEditorViewController: WKSourceEditorViewController)
func sourceEditorViewControllerDidTapLink(parameters: WKSourceEditorFormatterLinkWizardParameters)
func sourceEditorViewControllerDidTapImage()
}

// MARK: NSNotification Names
Expand Down Expand Up @@ -266,6 +267,10 @@ public class WKSourceEditorViewController: WKComponentViewController {

self.preselectedTextRange = nil
}

public func insertImage(wikitext: String) {
textFrameworkMediator.linkFormatter?.insertImage(wikitext: wikitext, in: textView)
}
}

// MARK: - Private
Expand Down Expand Up @@ -364,7 +369,7 @@ extension WKSourceEditorViewController: WKEditorToolbarExpandingViewDelegate {
}

func toolbarExpandingViewDidTapImage(toolbarView: WKEditorToolbarExpandingView) {

delegate?.sourceEditorViewControllerDidTapImage()
}
}

Expand Down
3 changes: 1 addition & 2 deletions Wikipedia/Code/InsertMediaViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,7 @@ final class InsertMediaViewController: ViewController {
switch (mediaSettings.caption, mediaSettings.alternativeText) {
case (let caption?, let alternativeText?):
wikitext = """
[[\(searchResult.fileTitle) | \(mediaSettings.advanced.imageType.rawValue) | \(mediaSettings.advanced.imageSize.rawValue) | \(mediaSettings.advanced.imagePosition.rawValue) | alt= \(alternativeText) |
\(caption)]]
[[\(searchResult.fileTitle) | \(mediaSettings.advanced.imageType.rawValue) | \(mediaSettings.advanced.imageSize.rawValue) | \(mediaSettings.advanced.imagePosition.rawValue) | alt= \(alternativeText) | \(caption)]]
"""
case (let caption?, nil):
wikitext = """
Expand Down
23 changes: 23 additions & 0 deletions Wikipedia/Code/PageEditorViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,7 @@ extension PageEditorViewController: Themeable {
// MARK: - WKSourceEditorViewControllerDelegate

extension PageEditorViewController: WKSourceEditorViewControllerDelegate {

func sourceEditorViewControllerDidTapFind(sourceEditorViewController: WKSourceEditorViewController) {
showFocusNavigationView()
}
Expand Down Expand Up @@ -273,6 +274,15 @@ extension PageEditorViewController: WKSourceEditorViewControllerDelegate {
present(navigationController, animated: true)
}
}

func sourceEditorViewControllerDidTapImage() {
let insertMediaViewController = InsertMediaViewController(articleTitle: pageURL.wmf_title, siteURL: pageURL.wmf_site)
insertMediaViewController.delegate = self
insertMediaViewController.apply(theme: theme)
let navigationController = WMFThemeableNavigationController(rootViewController: insertMediaViewController, theme: theme)
navigationController.isNavigationBarHidden = true
present(navigationController, animated: true)
}
}

// MARK: - PageEditorNavigationItemControllerDelegate
Expand Down Expand Up @@ -384,6 +394,19 @@ extension PageEditorViewController: InsertLinkViewControllerDelegate {
}
}

// MARK: - Insert

extension PageEditorViewController: InsertMediaViewControllerDelegate {
func insertMediaViewController(_ insertMediaViewController: InsertMediaViewController, didTapCloseButton button: UIBarButtonItem) {
dismiss(animated: true)
}

func insertMediaViewController(_ insertMediaViewController: InsertMediaViewController, didPrepareWikitextToInsert wikitext: String) {
sourceEditor.insertImage(wikitext: wikitext)
dismiss(animated: true)
}
}

enum SourceEditorAccessibilityIdentifiers: String {
case entryButton = "Source Editor Entry Button"
case textView = "Source Editor TextView"
Expand Down
4 changes: 4 additions & 0 deletions WikipediaUITests/UITestHelperViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,10 @@ public class UITestHelperViewController: WKCanvasViewController {


extension UITestHelperViewController: WKSourceEditorViewControllerDelegate {
public func sourceEditorViewControllerDidTapImage() {

}

public func sourceEditorViewControllerDidTapLink(parameters: Components.WKSourceEditorFormatterLinkWizardParameters) {

}
Expand Down

0 comments on commit c6a3cad

Please sign in to comment.