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.