diff --git a/Brisk/AppDelegate.swift b/Brisk/AppDelegate.swift index f96911b..63aad3f 100644 --- a/Brisk/AppDelegate.swift +++ b/Brisk/AppDelegate.swift @@ -54,6 +54,7 @@ final class AppDelegate: NSObject, NSApplicationDelegate { private func registerDefaults() { let defaults: [String: Any] = [ Defaults.showDockIcon: false, + Defaults.copyOpenRadarLinkToClipboard: false ] UserDefaults.standard.register(defaults: defaults) diff --git a/Brisk/Constants.swift b/Brisk/Constants.swift index eb86507..82fc52b 100644 --- a/Brisk/Constants.swift +++ b/Brisk/Constants.swift @@ -1,3 +1,4 @@ struct Defaults { static let showDockIcon = "showDockIcon" + static let copyOpenRadarLinkToClipboard = "copyOpenRadarLinkToClipboard" } diff --git a/Brisk/Controllers/RadarViewController.swift b/Brisk/Controllers/RadarViewController.swift index 146fa6f..d7010b3 100644 --- a/Brisk/Controllers/RadarViewController.swift +++ b/Brisk/Controllers/RadarViewController.swift @@ -150,7 +150,7 @@ final class RadarViewController: ViewController { guard self?.postToOpenRadarButton.state == .on, let (_, token) = Keychain.get(.openRadar) else { - self?.submitRadarCompletion(success: true) + self?.submitRadarCompletion(success: true, code: radarID) return } @@ -163,7 +163,7 @@ final class RadarViewController: ViewController { }, closure: { [weak self] result in switch result { case .success: - self?.submitRadarCompletion(success: true) + self?.submitRadarCompletion(success: true, code: radarID) case .failure(let error): self?.showError(message: error.message) self?.submitRadarCompletion(success: false) @@ -214,15 +214,28 @@ final class RadarViewController: ViewController { } } - private func submitRadarCompletion(success: Bool) { + private func submitRadarCompletion(success: Bool, code: Int = -1) { self.progressIndicator.stopAnimation(self) self.submitButton.isEnabled = true - if success { + if success && code != -1 { if self.document?.fileURL != nil { self.document?.save(self) } + let notification = NSUserNotification() + notification.title = "Radar submitted" + + if UserDefaults.standard.bool(forKey: Defaults.copyOpenRadarLinkToClipboard) { + NSPasteboard.general.clearContents() + NSPasteboard.general.setString("http://www.openradar.me/\(code)", forType: .string) + notification.informativeText = "The OpenRadar link has been copied to your clipboard." + } else { + notification.informativeText = "Your report identifier is: rdar://\(code)" + } + NSUserNotificationCenter.default.delegate = self + NSUserNotificationCenter.default.deliver(notification) + self.document?.close() } } @@ -335,3 +348,9 @@ extension RadarViewController: NSWindowDelegate { self.updateOpenRadarButton() } } + +extension RadarViewController: NSUserNotificationCenterDelegate { + func userNotificationCenter(_ center: NSUserNotificationCenter, shouldPresent notification: NSUserNotification) -> Bool { + return true + } +} diff --git a/Brisk/Resources/Base.lproj/Main.storyboard b/Brisk/Resources/Base.lproj/Main.storyboard index 6ca91ee..9be6064 100644 --- a/Brisk/Resources/Base.lproj/Main.storyboard +++ b/Brisk/Resources/Base.lproj/Main.storyboard @@ -1024,21 +1024,43 @@ DQ + - + + + + + + + + + + + + + - - - - - - - - - - - + + + - - + - + + - + - + @@ -1148,14 +1162,14 @@ DQ - + - + - + @@ -1170,21 +1184,21 @@ DQ - + - + - + - + @@ -1199,21 +1213,21 @@ DQ - + - + - + - + @@ -1228,21 +1242,21 @@ DQ - + - + - + - + @@ -1257,21 +1271,21 @@ DQ - + - + - + - + @@ -1286,7 +1300,7 @@ DQ - +