Merge pull request #1605 from hartlco/1590-sharing-item-to-omnifocus-adds-extra-newline

Provide dedicated TitleActivityItemSource when sharing to Omnifocus and Things
This commit is contained in:
Brent Simmons
2020-01-11 11:17:30 -08:00
committed by GitHub
6 changed files with 68 additions and 17 deletions

View File

@@ -280,9 +280,8 @@ class WebViewController: UIViewController {
guard let preferredLink = article?.preferredLink, let url = URL(string: preferredLink) else {
return
}
let itemSource = ArticleActivityItemSource(url: url, subject: article!.title)
let activityViewController = UIActivityViewController(activityItems: [itemSource], applicationActivities: [OpenInSafariActivity()])
let activityViewController = UIActivityViewController(url: url, title: article?.title, applicationActivities: [OpenInSafariActivity()])
activityViewController.popoverPresentationController?.barButtonItem = popOverBarButtonItem
present(activityViewController, animated: true)
}

View File

@@ -23,18 +23,7 @@ class ArticleActivityItemSource: NSObject, UIActivityItemSource {
}
func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivity.ActivityType?) -> Any? {
guard let activityType = activityType,
let subject = subject else {
return url
}
switch activityType.rawValue {
case "com.omnigroup.OmniFocus3.iOS.QuickEntry",
"com.culturedcode.ThingsiPhone.ShareExtension":
return "\(subject)\n\(url)"
default:
return url
}
return url
}
func activityViewController(_ activityViewController: UIActivityViewController, subjectForActivityType activityType: UIActivity.ActivityType?) -> String {

View File

@@ -857,8 +857,7 @@ private extension MasterTimelineViewController {
}
func shareDialogForTableCell(indexPath: IndexPath, url: URL, title: String?) {
let itemSource = ArticleActivityItemSource(url: url, subject: title)
let activityViewController = UIActivityViewController(activityItems: [itemSource], applicationActivities: nil)
let activityViewController = UIActivityViewController(url: url, title: title, applicationActivities: nil)
guard let cell = tableView.cellForRow(at: indexPath) else { return }
let popoverController = activityViewController.popoverPresentationController

View File

@@ -0,0 +1,38 @@
//
// TitleActivityItemSource.swift
// NetNewsWire-iOS
//
// Created by Martin Hartl on 01/11/20.
// Copyright © 2020 Ranchero Software. All rights reserved.
//
import UIKit
class TitleActivityItemSource: NSObject, UIActivityItemSource {
private let title: String?
init(title: String?) {
self.title = title
}
func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
return title as Any
}
func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivity.ActivityType?) -> Any? {
guard let activityType = activityType,
let title = title else {
return NSNull()
}
switch activityType.rawValue {
case "com.omnigroup.OmniFocus3.iOS.QuickEntry",
"com.culturedcode.ThingsiPhone.ShareExtension":
return title
default:
return NSNull()
}
}
}

View File

@@ -0,0 +1,18 @@
//
// ShareArticleActivityViewController.swift
// NetNewsWire-iOS
//
// Created by Martin Hartl on 01/11/20.
// Copyright © 2020 Ranchero Software. All rights reserved.
//
import UIKit
extension UIActivityViewController {
convenience init(url: URL, title: String?, applicationActivities: [UIActivity]?) {
let itemSource = ArticleActivityItemSource(url: url, subject: title)
let titleSource = TitleActivityItemSource(title: title)
self.init(activityItems: [titleSource, itemSource], applicationActivities: applicationActivities)
}
}