From eb7ac0f076949edf3ac5a9736799f251fc759175 Mon Sep 17 00:00:00 2001 From: Rizwan Mohamed Ibrahim Date: Fri, 29 May 2020 15:44:32 +0530 Subject: [PATCH 1/3] fix open in app browser for mac and iOS --- Mac/MainWindow/MainWindowController.swift | 5 +++++ Shared/Resources/GlobalKeyboardShortcuts.plist | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Mac/MainWindow/MainWindowController.swift b/Mac/MainWindow/MainWindowController.swift index 4e2a74f88..0a862d4ea 100644 --- a/Mac/MainWindow/MainWindowController.swift +++ b/Mac/MainWindow/MainWindowController.swift @@ -273,6 +273,11 @@ class MainWindowController : NSWindowController, NSUserInterfaceValidations { openArticleInBrowser(sender) } + @objc func openFeedInAppBrowser(_ sender: Any?) { + // There is no In-App Browser for mac - so we use safari + openArticleInBrowser(sender) + } + @IBAction func openInBrowserUsingOppositeOfSettings(_ sender: Any?) { if let link = currentLink { Browser.open(link, inBackground: !AppDefaults.openInBrowserInBackground) diff --git a/Shared/Resources/GlobalKeyboardShortcuts.plist b/Shared/Resources/GlobalKeyboardShortcuts.plist index 7dab14cf5..ed8bc7e4d 100644 --- a/Shared/Resources/GlobalKeyboardShortcuts.plist +++ b/Shared/Resources/GlobalKeyboardShortcuts.plist @@ -110,7 +110,7 @@ key [return] action - openInBrowser: + openFeedInAppBrowser: key From d671029828d063fad4b5c173be2ebcaf085da7f8 Mon Sep 17 00:00:00 2001 From: Rizwan Mohamed Ibrahim Date: Fri, 29 May 2020 19:26:20 +0530 Subject: [PATCH 2/3] refactor open in app browser for mac and iOS --- Mac/MainWindow/MainWindowController.swift | 2 +- Mac/MainWindow/Sidebar/SidebarViewController.swift | 8 ++++++++ Shared/Resources/GlobalKeyboardShortcuts.plist | 2 +- iOS/KeyboardManager.swift | 2 +- iOS/RootSplitViewController.swift | 6 +++--- 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Mac/MainWindow/MainWindowController.swift b/Mac/MainWindow/MainWindowController.swift index 0a862d4ea..4587c51fd 100644 --- a/Mac/MainWindow/MainWindowController.swift +++ b/Mac/MainWindow/MainWindowController.swift @@ -273,7 +273,7 @@ class MainWindowController : NSWindowController, NSUserInterfaceValidations { openArticleInBrowser(sender) } - @objc func openFeedInAppBrowser(_ sender: Any?) { + @objc func openInAppBrowser(_ sender: Any?) { // There is no In-App Browser for mac - so we use safari openArticleInBrowser(sender) } diff --git a/Mac/MainWindow/Sidebar/SidebarViewController.swift b/Mac/MainWindow/Sidebar/SidebarViewController.swift index 7cb181d39..a6afd8cca 100644 --- a/Mac/MainWindow/Sidebar/SidebarViewController.swift +++ b/Mac/MainWindow/Sidebar/SidebarViewController.swift @@ -240,6 +240,14 @@ protocol SidebarDelegate: class { Browser.open(homePageURL, invertPreference: NSApp.currentEvent?.modifierFlags.contains(.shift) ?? false) } + @objc func openInAppBrowser(_ sender: Any?) { + // There is no In-App Browser for mac - so we use safari + guard let feed = singleSelectedWebFeed, let homePageURL = feed.homePageURL else { + return + } + Browser.open(homePageURL, invertPreference: NSApp.currentEvent?.modifierFlags.contains(.shift) ?? false) + } + @IBAction func gotoToday(_ sender: Any?) { selectFeed(SmartFeedsController.shared.todayFeed) focus() diff --git a/Shared/Resources/GlobalKeyboardShortcuts.plist b/Shared/Resources/GlobalKeyboardShortcuts.plist index ed8bc7e4d..c72a56917 100644 --- a/Shared/Resources/GlobalKeyboardShortcuts.plist +++ b/Shared/Resources/GlobalKeyboardShortcuts.plist @@ -110,7 +110,7 @@ key [return] action - openFeedInAppBrowser: + openInAppBrowser: key diff --git a/iOS/KeyboardManager.swift b/iOS/KeyboardManager.swift index 581652073..9fcbff108 100644 --- a/iOS/KeyboardManager.swift +++ b/iOS/KeyboardManager.swift @@ -178,7 +178,7 @@ private extension KeyboardManager { keys.append(KeyboardManager.createKeyCommand(title: openInBrowserTitle, action: "openInBrowser:", input: UIKeyCommand.inputRightArrow, modifiers: [.command])) let openInAppBrowserTitle = NSLocalizedString("Open In App Browser", comment: "Open In App Browser") - keys.append(KeyboardManager.createKeyCommand(title: openInAppBrowserTitle, action: "openInAppBrowser:", input: "\r", modifiers: [])) + keys.append(KeyboardManager.createKeyCommand(title: openInAppBrowserTitle, action: "openArticleInAppBrowser:", input: "\r", modifiers: [])) let toggleReadTitle = NSLocalizedString("Toggle Read Status", comment: "Toggle Read Status") keys.append(KeyboardManager.createKeyCommand(title: toggleReadTitle, action: "toggleRead:", input: "u", modifiers: [.command, .shift])) diff --git a/iOS/RootSplitViewController.swift b/iOS/RootSplitViewController.swift index 4117a0ee7..18c53c305 100644 --- a/iOS/RootSplitViewController.swift +++ b/iOS/RootSplitViewController.swift @@ -83,11 +83,11 @@ class RootSplitViewController: UISplitViewController { } @objc func openInAppBrowser(_ sender: Any?) { - coordinator.showInAppBrowserForCurrentArticle() + coordinator.showInAppBrowserForCurrentFeed() } - @objc func openFeedInAppBrowser(_ sender: Any?) { - coordinator.showInAppBrowserForCurrentFeed() + @objc func openArticleInAppBrowser(_ sender: Any?) { + coordinator.showInAppBrowserForCurrentArticle() } @objc func articleSearch(_ sender: Any?) { From f2cd09aae33b338506e42a69739125eebbeffcce Mon Sep 17 00:00:00 2001 From: Rizwan Mohamed Ibrahim Date: Fri, 29 May 2020 20:39:04 +0530 Subject: [PATCH 3/3] refactor open in app browser with global shortcuts --- Shared/Resources/GlobalKeyboardShortcuts.plist | 2 +- iOS/KeyboardManager.swift | 3 --- iOS/RootSplitViewController.swift | 6 +----- iOS/SceneCoordinator.swift | 17 +++++++++-------- 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/Shared/Resources/GlobalKeyboardShortcuts.plist b/Shared/Resources/GlobalKeyboardShortcuts.plist index c72a56917..c6288be02 100644 --- a/Shared/Resources/GlobalKeyboardShortcuts.plist +++ b/Shared/Resources/GlobalKeyboardShortcuts.plist @@ -106,7 +106,7 @@ title - Open in Browser + Open In App Browser key [return] action diff --git a/iOS/KeyboardManager.swift b/iOS/KeyboardManager.swift index 9fcbff108..a79dcd834 100644 --- a/iOS/KeyboardManager.swift +++ b/iOS/KeyboardManager.swift @@ -177,9 +177,6 @@ private extension KeyboardManager { let openInBrowserTitle = NSLocalizedString("Open In Browser", comment: "Open In Browser") keys.append(KeyboardManager.createKeyCommand(title: openInBrowserTitle, action: "openInBrowser:", input: UIKeyCommand.inputRightArrow, modifiers: [.command])) - let openInAppBrowserTitle = NSLocalizedString("Open In App Browser", comment: "Open In App Browser") - keys.append(KeyboardManager.createKeyCommand(title: openInAppBrowserTitle, action: "openArticleInAppBrowser:", input: "\r", modifiers: [])) - let toggleReadTitle = NSLocalizedString("Toggle Read Status", comment: "Toggle Read Status") keys.append(KeyboardManager.createKeyCommand(title: toggleReadTitle, action: "toggleRead:", input: "u", modifiers: [.command, .shift])) diff --git a/iOS/RootSplitViewController.swift b/iOS/RootSplitViewController.swift index 18c53c305..248436129 100644 --- a/iOS/RootSplitViewController.swift +++ b/iOS/RootSplitViewController.swift @@ -83,11 +83,7 @@ class RootSplitViewController: UISplitViewController { } @objc func openInAppBrowser(_ sender: Any?) { - coordinator.showInAppBrowserForCurrentFeed() - } - - @objc func openArticleInAppBrowser(_ sender: Any?) { - coordinator.showInAppBrowserForCurrentArticle() + coordinator.showInAppBrowser() } @objc func articleSearch(_ sender: Any?) { diff --git a/iOS/SceneCoordinator.swift b/iOS/SceneCoordinator.swift index 8d087a51c..6d976f567 100644 --- a/iOS/SceneCoordinator.swift +++ b/iOS/SceneCoordinator.swift @@ -1185,15 +1185,16 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider { } UIApplication.shared.open(url, options: [:]) } - - func showInAppBrowserForCurrentArticle() { - articleViewController?.openInAppBrowser() - } - - func showInAppBrowserForCurrentFeed() { - masterFeedViewController.openInAppBrowser() - } + func showInAppBrowser() { + if currentArticle != nil { + articleViewController?.openInAppBrowser() + } + else { + masterFeedViewController.openInAppBrowser() + } + } + func navigateToFeeds() { masterFeedViewController?.focus() selectArticle(nil)