diff --git a/HackerNews/Base.lproj/Main.storyboard b/HackerNews/Base.lproj/Main.storyboard
index 39ba362..48363e1 100644
--- a/HackerNews/Base.lproj/Main.storyboard
+++ b/HackerNews/Base.lproj/Main.storyboard
@@ -1315,6 +1315,9 @@ Gw
+
+
+
@@ -1590,6 +1593,9 @@ Gw
+
+
+
diff --git a/HackerNews/ItemList/ItemListCellView.swift b/HackerNews/ItemList/ItemListCellView.swift
index 3e8997e..5a39302 100644
--- a/HackerNews/ItemList/ItemListCellView.swift
+++ b/HackerNews/ItemList/ItemListCellView.swift
@@ -53,4 +53,22 @@ class ItemListCellView: NSTableCellView {
}
}
}
+
+ @IBAction func openURL(_ sender: NSButton) {
+ guard objectValue != nil else {
+ return
+ }
+ let item = objectValue as! TopLevelItem
+
+ let url: URL
+ switch item {
+ case .story(let story):
+ guard story.content.url != nil else { return }
+ url = story.content.url!
+ case .job(let job):
+ guard job.content.url != nil else { return }
+ url = job.content.url!
+ }
+ NSWorkspace.shared.open(url)
+ }
}
diff --git a/HackerNews/Page/ItemViewController.swift b/HackerNews/Page/ItemViewController.swift
index c633894..1032779 100644
--- a/HackerNews/Page/ItemViewController.swift
+++ b/HackerNews/Page/ItemViewController.swift
@@ -54,6 +54,20 @@ class ItemViewController: NSViewController {
}
}
+ @IBAction func openURL(_ sender: NSButton) {
+ let url: URL
+ switch item {
+ case .story(let story):
+ guard story.content.url != nil else { return }
+ url = story.content.url!
+ case .job(let job):
+ guard job.content.url != nil else { return }
+ url = job.content.url!
+ default: return
+ }
+ NSWorkspace.shared.open(url)
+ }
+
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.