Merge pull request #28 from Toxblh/openUrl

Open url action
This commit is contained in:
Anton Palgunov
2018-04-20 18:42:23 +01:00
committed by GitHub
2 changed files with 18 additions and 1 deletions
+10 -1
View File
@@ -83,7 +83,7 @@ class SupportedTypesHolder {
return (item: .weather(interval: interval ?? 1800.00, units: units ?? "metric", api_key: api_key ?? "32c4256d09a4c52b38aecddba7a078f6", icon_type: icon_type ?? "text"), action: action, parameters: [:])
},
"currency": { decoder in
enum CodingKeys: String, CodingKey { case refreshInterval; case from; case to; case action }
enum CodingKeys: String, CodingKey { case refreshInterval; case from; case to }
let container = try decoder.container(keyedBy: CodingKeys.self)
let interval = try container.decodeIfPresent(Double.self, forKey: .refreshInterval)
let from = try container.decodeIfPresent(String.self, forKey: .from)
@@ -167,6 +167,7 @@ enum ItemType: Decodable {
case icon_type
case formatTemplate
case image
case url
}
enum ItemTypeRaw: String, Decodable {
@@ -223,6 +224,7 @@ enum ActionType: Decodable {
case appleSctipt(source: SourceProtocol)
case shellScript(executable: String, parameters: [String])
case custom(closure: ()->())
case openUrl(url: String)
private enum CodingKeys: String, CodingKey {
case action
@@ -230,6 +232,7 @@ enum ActionType: Decodable {
case actionAppleScript
case executablePath
case shellArguments
case url
}
private enum ActionTypeRaw: String, Decodable {
@@ -237,6 +240,7 @@ enum ActionType: Decodable {
case keyPress
case appleScript
case shellScript
case openUrl
}
init(from decoder: Decoder) throws {
@@ -256,6 +260,9 @@ enum ActionType: Decodable {
let executable = try container.decode(String.self, forKey: .executablePath)
let parameters = try container.decodeIfPresent([String].self, forKey: .shellArguments) ?? []
self = .shellScript(executable: executable, parameters: parameters)
case .some(.openUrl):
let url = try container.decode(String.self, forKey: .url)
self = .openUrl(url: url)
case .none:
self = .none
}
@@ -287,6 +294,8 @@ func ==(lhs: ActionType, rhs: ActionType) -> Bool {
return a == b
case let (.shellScript(a, b), .shellScript(c, d)):
return a == c && b == d
case let (.openUrl(a), .openUrl(b)):
return a == b
default:
return false
}
+8
View File
@@ -222,6 +222,14 @@ class TouchBarController: NSObject, NSTouchBarDelegate {
task.arguments = parameters
task.launch()
}
case .openUrl(url: let url):
return {
if let url = URL(string: url), NSWorkspace.shared.open(url) {
// print("URL was successfully opened")
} else {
print("error", url)
}
}
case .custom(closure: let closure):
return closure
case .none: