From b2a8174099a358d690b6d8e220681459dc33332b Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Wed, 12 Jan 2022 12:56:02 -0500 Subject: [PATCH] Add context menu actions to item list --- .../Screens/Items/ItemsViewController.swift | 25 ++++++++++++++++++- Reader/Screens/Read/ReadViewController.swift | 3 ++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/Reader/Screens/Items/ItemsViewController.swift b/Reader/Screens/Items/ItemsViewController.swift index 22d24a3..46abefc 100644 --- a/Reader/Screens/Items/ItemsViewController.swift +++ b/Reader/Screens/Items/ItemsViewController.swift @@ -7,6 +7,7 @@ import UIKit import CoreData +import SafariServices class ItemsViewController: UIViewController { @@ -88,7 +89,29 @@ extension ItemsViewController: UICollectionViewDelegate { } return UIContextMenuConfiguration(identifier: nil, previewProvider: { ReadViewController(item: item, fervorController: self.fervorController) - }, actionProvider: nil) + }, actionProvider: { _ in + var children: [UIAction] = [] + if let url = item.url { + children.append(UIAction(title: "Open in Safari", image: UIImage(systemName: "safari"), handler: { [weak self] _ in + let vc = SFSafariViewController(url: url) + vc.preferredControlTintColor = .appTintColor + self?.present(vc, animated: true) + })) + children.append(UIAction(title: "Share", image: UIImage(systemName: "square.and.arrow.up"), handler: { [weak self] _ in + self?.present(UIActivityViewController(activityItems: [url], applicationActivities: nil), animated: true) + })) + } + if item.read { + children.append(UIAction(title: "Mark as Unread", image: UIImage(systemName: "checkmark.circle"), handler: { _ in + item.read = false + })) + } else { + children.append(UIAction(title: "Mark as Read", image: UIImage(systemName: "checkmark.circle.fill"), handler: { _ in + item.read = true + })) + } + return UIMenu(children: children) + }) } func collectionView(_ collectionView: UICollectionView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { diff --git a/Reader/Screens/Read/ReadViewController.swift b/Reader/Screens/Read/ReadViewController.swift index dc489c0..8dd546f 100644 --- a/Reader/Screens/Read/ReadViewController.swift +++ b/Reader/Screens/Read/ReadViewController.swift @@ -149,7 +149,8 @@ extension ReadViewController: WKUIDelegate { } actionProvider: { _ in return UIMenu(children: [ UIAction(title: "Open in Safari", image: UIImage(systemName: "safari"), handler: { [weak self] _ in - self?.present(SFSafariViewController(url: url), animated: true) + guard let self = self else { return } + self.present(self.createSafariVC(url: url), animated: true) }), UIAction(title: "Share", image: UIImage(systemName: "square.and.arrow.up"), handler: { [weak self] _ in self?.present(UIActivityViewController(activityItems: [url], applicationActivities: nil), animated: true)