Merge pull request #1540 from myurieff/previewing-articles
Previewing articles
This commit is contained in:
commit
7edaf87733
|
@ -18,6 +18,7 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner
|
||||||
private lazy var feedTapGestureRecognizer = UITapGestureRecognizer(target: self, action:#selector(showFeedInspector(_:)))
|
private lazy var feedTapGestureRecognizer = UITapGestureRecognizer(target: self, action:#selector(showFeedInspector(_:)))
|
||||||
|
|
||||||
private var refreshProgressView: RefreshProgressView?
|
private var refreshProgressView: RefreshProgressView?
|
||||||
|
private var currentlyPreviewedArticle: Article?
|
||||||
|
|
||||||
@IBOutlet weak var filterButton: UIBarButtonItem!
|
@IBOutlet weak var filterButton: UIBarButtonItem!
|
||||||
@IBOutlet weak var markAllAsReadButton: UIBarButtonItem!
|
@IBOutlet weak var markAllAsReadButton: UIBarButtonItem!
|
||||||
|
@ -306,41 +307,36 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner
|
||||||
|
|
||||||
guard let article = dataSource.itemIdentifier(for: indexPath) else { return nil }
|
guard let article = dataSource.itemIdentifier(for: indexPath) else { return nil }
|
||||||
|
|
||||||
return UIContextMenuConfiguration(identifier: indexPath.row as NSCopying, previewProvider: nil, actionProvider: { [weak self] suggestedActions in
|
currentlyPreviewedArticle = article
|
||||||
|
|
||||||
guard let self = self else { return nil }
|
return UIContextMenuConfiguration(
|
||||||
|
identifier: indexPath.row as NSCopying,
|
||||||
|
previewProvider: { [weak self] in
|
||||||
|
|
||||||
var actions = [UIAction]()
|
guard let self = self else { return nil }
|
||||||
actions.append(self.toggleArticleReadStatusAction(article))
|
|
||||||
actions.append(self.toggleArticleStarStatusAction(article))
|
let articleViewController = UIStoryboard.main.instantiateController(ofType: ArticleViewController.self)
|
||||||
|
articleViewController.coordinator = self.coordinator
|
||||||
|
articleViewController.article = article
|
||||||
|
return articleViewController
|
||||||
|
|
||||||
|
}, actionProvider: { [weak self] suggestedActions in
|
||||||
|
|
||||||
|
guard let self = self else { return nil }
|
||||||
|
|
||||||
|
return UIMenu(title: "", children: [
|
||||||
|
self.toggleArticleReadStatusAction(article),
|
||||||
|
self.toggleArticleStarStatusAction(article),
|
||||||
|
self.markAboveAsReadAction(article),
|
||||||
|
self.markBelowAsReadAction(article),
|
||||||
|
self.discloseFeedAction(article),
|
||||||
|
self.markAllInFeedAsReadAction(article),
|
||||||
|
self.openInBrowserAction(article),
|
||||||
|
self.shareAction(article, indexPath: indexPath)
|
||||||
|
].compactMap { $0 })
|
||||||
|
|
||||||
if let action = self.markAboveAsReadAction(article) {
|
|
||||||
actions.append(action)
|
|
||||||
}
|
}
|
||||||
|
)
|
||||||
if let action = self.markBelowAsReadAction(article) {
|
|
||||||
actions.append(action)
|
|
||||||
}
|
|
||||||
|
|
||||||
if let action = self.discloseFeedAction(article) {
|
|
||||||
actions.append(action)
|
|
||||||
}
|
|
||||||
|
|
||||||
if let action = self.markAllInFeedAsReadAction(article) {
|
|
||||||
actions.append(action)
|
|
||||||
}
|
|
||||||
|
|
||||||
if let action = self.openInBrowserAction(article) {
|
|
||||||
actions.append(action)
|
|
||||||
}
|
|
||||||
|
|
||||||
if let action = self.shareAction(article, indexPath: indexPath) {
|
|
||||||
actions.append(action)
|
|
||||||
}
|
|
||||||
|
|
||||||
return UIMenu(title: "", children: actions)
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -353,6 +349,13 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner
|
||||||
return UITargetedPreview(view: cell, parameters: CroppingPreviewParameters(view: cell))
|
return UITargetedPreview(view: cell, parameters: CroppingPreviewParameters(view: cell))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) {
|
||||||
|
if let article = currentlyPreviewedArticle {
|
||||||
|
coordinator.selectArticle(article)
|
||||||
|
currentlyPreviewedArticle = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
||||||
becomeFirstResponder()
|
becomeFirstResponder()
|
||||||
let article = dataSource.itemIdentifier(for: indexPath)
|
let article = dataSource.itemIdentifier(for: indexPath)
|
||||||
|
|
Loading…
Reference in New Issue