/**
* 出撃中にドロップした艦をマスクした上で入居数に反映させるためのダミーデータの生成と削除を行う
**/
-class DummyShipCommand: JSONCommand {
+final class DummyShipCommand: JSONCommand {
+
private static var needsEnterDummy = false
override func execute() {
- if api == "/kcsapi/api_req_sortie/battleresult" { checkGetShip() }
- if api == "/kcsapi/api_get_member/ship_deck" { enterDummy() }
- if api == "/kcsapi/api_port/port" { removeDummy() }
+
+ switch api.endpoint {
+
+ case .battleResult, .combinedBattleResult: checkGetShip()
+
+ case .shipDeck: enterDummy()
+
+ case .port: removeDummy()
+
+ default:
+ Logger.shared.log("Missing API: \(apiResponse.api)")
+
+ }
}
private func checkGetShip() {
- guard let data = json[dataKey] as? [String: Any],
- let _ = data["api_get_ship"]
- else { return }
- DummyShipCommand.needsEnterDummy = true
+
+ DummyShipCommand.needsEnterDummy = data["api_get_ship"].exists()
}
+
private func enterDummy() {
- if !DummyShipCommand.needsEnterDummy { return }
+
+ guard DummyShipCommand.needsEnterDummy else {
+
+ return
+ }
+
let store = ServerDataStore.oneTimeEditor()
- store.createShip()?.id = -2
+ store.sync { store.createShip()?.id = -2 }
DummyShipCommand.needsEnterDummy = false
}
+
private func removeDummy() {
+
let store = ServerDataStore.oneTimeEditor()
- store.ships(byId: -2).forEach { store.delete($0) }
+ store.sync { store.ships(by: -2).forEach(store.delete) }
DummyShipCommand.needsEnterDummy = false
}
}