2 // CombinedCommand.swift
5 // Created by Hori,Masaki on 2017/01/09.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
11 enum CombineType: Int {
21 func displayName() -> String {
25 case .cancel: return LocalizedStrings.uncombined.string
27 case .maneuver: return LocalizedStrings.maneuver.string
29 case .water: return LocalizedStrings.water.string
31 case .transportation: return LocalizedStrings.transportation.string
37 extension Notification.Name {
39 static let CombinedDidCange = Notification.Name("com.masakih.KCD.Notification.CombinedDidCange")
42 final class CombinedCommand: JSONCommand {
44 static let userInfoKey = "com.masakih.KCD.Notification.CombinedDidCange.CombinedType"
46 override class func canExecuteAPI(_ api: API) -> Bool {
48 return api.endpoint == .henseiCombined
51 override func execute() {
53 if api.endpoint == .port {
60 parameter["api_combined_type"]
62 .flatMap { CombineType(rawValue: $0) }
63 .map(postNotification(withType:))
66 private func handlePort() {
68 if let t = data["api_combined_flag"].int {
70 CombineType(rawValue: t).map(postNotification(withType:))
74 postNotification(withType: .cancel)
78 private func postNotification(withType type: CombineType) {
80 let userInfo = [CombinedCommand.userInfoKey: type]
82 NotificationCenter.default.post(name: .CombinedDidCange, object: self, userInfo: userInfo)