From 78fdf0a0d074d0bc6737987a74d0c5b51a479614 Mon Sep 17 00:00:00 2001
From: Maurice Parker <mo@vincode.io>
Date: Fri, 17 Jul 2020 17:08:08 -0500
Subject: [PATCH] Enable open in browser toolbar button.

---
 Multiplatform/Shared/SceneModel.swift         | 19 ++++++++++++++++++-
 .../Shared/SceneNavigationView.swift          |  1 +
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/Multiplatform/Shared/SceneModel.swift b/Multiplatform/Shared/SceneModel.swift
index 8a3f9b1d7..0200e436b 100644
--- a/Multiplatform/Shared/SceneModel.swift
+++ b/Multiplatform/Shared/SceneModel.swift
@@ -6,7 +6,11 @@
 //  Copyright © 2020 Ranchero Software. All rights reserved.
 //
 
-import Foundation
+#if os(macOS)
+import AppKit
+#else
+import UIKit
+#endif
 import Combine
 import Account
 import Articles
@@ -54,6 +58,19 @@ final class SceneModel: ObservableObject {
 		}
 	}
 	
+	// MARK Navigation API
+	
+	func openInBrowser() {
+		guard let link = selectedArticles.first?.preferredLink else { return }
+		
+		#if os(macOS)
+		Browser.open(link, invertPreference: NSApp.currentEvent?.modifierFlags.contains(.shift) ?? false)
+		#else
+		guard let url = URL(string: link) else { return }
+		UIApplication.shared.open(url, options: [:])
+		#endif
+	}
+	
 	// MARK: Article Management API
 	
 	func toggleReadStatusForSelectedArticles() {
diff --git a/Multiplatform/Shared/SceneNavigationView.swift b/Multiplatform/Shared/SceneNavigationView.swift
index 6cb0d901d..35cd3b5a7 100644
--- a/Multiplatform/Shared/SceneNavigationView.swift
+++ b/Multiplatform/Shared/SceneNavigationView.swift
@@ -158,6 +158,7 @@ struct SceneNavigationView: View {
 			}
 			ToolbarItem {
 				Button {
+					sceneModel.openInBrowser()
 				} label: {
 					AppAssets.openInBrowserImage
 				}