Fix error when event was lost after add(event:) error
This commit is contained in:
parent
fe3f45a5f4
commit
57930a46ce
2
.gitignore
vendored
2
.gitignore
vendored
@ -2,4 +2,6 @@ design/generated/
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
AutoCat.xcodeproj/project.xcworkspace/xcuserdata/
|
AutoCat.xcodeproj/project.xcworkspace/xcuserdata/
|
||||||
AutoCat.xcodeproj/xcuserdata/
|
AutoCat.xcodeproj/xcuserdata/
|
||||||
|
xcuserdata/
|
||||||
.build/
|
.build/
|
||||||
|
.idea/
|
||||||
|
|||||||
@ -1080,7 +1080,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CODE_SIGN_ENTITLEMENTS = AutoCat/AutoCat.entitlements;
|
CODE_SIGN_ENTITLEMENTS = AutoCat/AutoCat.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 89;
|
CURRENT_PROJECT_VERSION = 90;
|
||||||
DEVELOPMENT_TEAM = 46DTTB8X4S;
|
DEVELOPMENT_TEAM = 46DTTB8X4S;
|
||||||
INFOPLIST_FILE = AutoCat/Info.plist;
|
INFOPLIST_FILE = AutoCat/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||||
@ -1105,7 +1105,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CODE_SIGN_ENTITLEMENTS = AutoCat/AutoCat.entitlements;
|
CODE_SIGN_ENTITLEMENTS = AutoCat/AutoCat.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 89;
|
CURRENT_PROJECT_VERSION = 90;
|
||||||
DEVELOPMENT_TEAM = 46DTTB8X4S;
|
DEVELOPMENT_TEAM = 46DTTB8X4S;
|
||||||
INFOPLIST_FILE = AutoCat/Info.plist;
|
INFOPLIST_FILE = AutoCat/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||||
|
|||||||
@ -17,210 +17,210 @@
|
|||||||
<key>DifferenceKit (Playground) 1.xcscheme</key>
|
<key>DifferenceKit (Playground) 1.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>9</integer>
|
<integer>9</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>DifferenceKit (Playground) 2.xcscheme</key>
|
<key>DifferenceKit (Playground) 2.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>10</integer>
|
<integer>10</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>DifferenceKit (Playground).xcscheme</key>
|
<key>DifferenceKit (Playground).xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>8</integer>
|
<integer>8</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Eureka (Playground) 1.xcscheme</key>
|
<key>Eureka (Playground) 1.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>3</integer>
|
<integer>3</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Eureka (Playground) 2.xcscheme</key>
|
<key>Eureka (Playground) 2.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>4</integer>
|
<integer>4</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Eureka (Playground) 3.xcscheme</key>
|
<key>Eureka (Playground) 3.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>17</integer>
|
<integer>18</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Eureka (Playground) 4.xcscheme</key>
|
<key>Eureka (Playground) 4.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>18</integer>
|
<integer>19</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Eureka (Playground) 5.xcscheme</key>
|
<key>Eureka (Playground) 5.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>19</integer>
|
<integer>21</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Eureka (Playground) 6.xcscheme</key>
|
<key>Eureka (Playground) 6.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>20</integer>
|
<integer>23</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Eureka (Playground) 7.xcscheme</key>
|
<key>Eureka (Playground) 7.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>21</integer>
|
<integer>25</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Eureka (Playground) 8.xcscheme</key>
|
<key>Eureka (Playground) 8.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>22</integer>
|
<integer>27</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Eureka (Playground).xcscheme</key>
|
<key>Eureka (Playground).xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>1</integer>
|
<integer>2</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>GettingStarted (Playground) 1.xcscheme</key>
|
<key>GettingStarted (Playground) 1.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>15</integer>
|
<integer>16</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>GettingStarted (Playground) 2.xcscheme</key>
|
<key>GettingStarted (Playground) 2.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>16</integer>
|
<integer>17</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>GettingStarted (Playground) 3.xcscheme</key>
|
<key>GettingStarted (Playground) 3.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>14</integer>
|
<integer>14</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>GettingStarted (Playground) 4.xcscheme</key>
|
<key>GettingStarted (Playground) 4.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>18</integer>
|
<integer>20</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>GettingStarted (Playground) 5.xcscheme</key>
|
<key>GettingStarted (Playground) 5.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>21</integer>
|
<integer>26</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>GettingStarted (Playground).xcscheme</key>
|
<key>GettingStarted (Playground).xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>12</integer>
|
<integer>12</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Rx (Playground) 1.xcscheme</key>
|
<key>Rx (Playground) 1.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>6</integer>
|
<integer>6</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Rx (Playground) 2.xcscheme</key>
|
<key>Rx (Playground) 2.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>7</integer>
|
<integer>7</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Rx (Playground) 3.xcscheme</key>
|
<key>Rx (Playground) 3.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>19</integer>
|
<integer>22</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Rx (Playground) 4.xcscheme</key>
|
<key>Rx (Playground) 4.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>20</integer>
|
<integer>24</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Rx (Playground) 5.xcscheme</key>
|
<key>Rx (Playground) 5.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>22</integer>
|
<integer>28</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Rx (Playground).xcscheme</key>
|
<key>Rx (Playground).xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>5</integer>
|
<integer>5</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>SwiftDate (Playground) 1.xcscheme</key>
|
<key>SwiftDate (Playground) 1.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>13</integer>
|
<integer>13</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>SwiftDate (Playground) 2.xcscheme</key>
|
<key>SwiftDate (Playground) 2.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>14</integer>
|
<integer>15</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>SwiftDate (Playground) 3.xcscheme</key>
|
<key>SwiftDate (Playground) 3.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>24</integer>
|
<integer>29</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>SwiftDate (Playground) 4.xcscheme</key>
|
<key>SwiftDate (Playground) 4.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>26</integer>
|
<integer>30</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>SwiftDate (Playground) 5.xcscheme</key>
|
<key>SwiftDate (Playground) 5.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>28</integer>
|
<integer>31</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>SwiftDate (Playground).xcscheme</key>
|
<key>SwiftDate (Playground).xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false />
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>11</integer>
|
<integer>11</integer>
|
||||||
</dict>
|
</dict>
|
||||||
@ -230,7 +230,7 @@
|
|||||||
<key>7A1146FC23FDE7E500B424AF</key>
|
<key>7A1146FC23FDE7E500B424AF</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>primary</key>
|
<key>primary</key>
|
||||||
<true/>
|
<true />
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
|
|||||||
@ -216,7 +216,7 @@ class CheckController: UIViewController, UITableViewDelegate, UITextFieldDelegat
|
|||||||
var events: [VehicleEvent] = []
|
var events: [VehicleEvent] = []
|
||||||
do {
|
do {
|
||||||
let realm = try Realm()
|
let realm = try Realm()
|
||||||
if let dbVehicle = realm.object(ofType: Vehicle.self, forPrimaryKey: numberNormalized), dbVehicle.unrecognized {
|
if let dbVehicle = realm.object(ofType: Vehicle.self, forPrimaryKey: numberNormalized) {
|
||||||
events.append(contentsOf: dbVehicle.events.map { $0.clone() })
|
events.append(contentsOf: dbVehicle.events.map { $0.clone() })
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
@ -398,7 +398,7 @@ class CheckController: UIViewController, UITableViewDelegate, UITextFieldDelegat
|
|||||||
}
|
}
|
||||||
|
|
||||||
return Single.zip(eventSingle, checkSingle).flatMap { eventResult, vehicleResult in
|
return Single.zip(eventSingle, checkSingle).flatMap { eventResult, vehicleResult in
|
||||||
let errors = [eventResult.error, vehicleResult.error].map { error -> Error? in
|
var errors = [eventResult.error, vehicleResult.error].map { error -> Error? in
|
||||||
if let clerror = error as? CLError {
|
if let clerror = error as? CLError {
|
||||||
if clerror.code != .denied {
|
if clerror.code != .denied {
|
||||||
return CocoaError.error(NSLocalizedString("Location error", comment: ""), reason: clerror.code.description)
|
return CocoaError.error(NSLocalizedString("Location error", comment: ""), reason: clerror.code.description)
|
||||||
@ -413,15 +413,17 @@ class CheckController: UIViewController, UITableViewDelegate, UITextFieldDelegat
|
|||||||
|
|
||||||
RxLocationManager.resetLastEvent()
|
RxLocationManager.resetLastEvent()
|
||||||
|
|
||||||
if vehicleResult.error != nil {
|
let realm = try Realm()
|
||||||
let realm = try Realm()
|
let dbVehicle = realm.object(ofType: Vehicle.self, forPrimaryKey: vehicleResult.vehicle.getNumber())
|
||||||
if let event = eventResult.event {
|
if let event = eventResult.event, let vehicle = dbVehicle {
|
||||||
try realm.write {
|
try realm.write {
|
||||||
vehicleResult.vehicle.events.append(event)
|
vehicle.events.append(event)
|
||||||
vehicleResult.vehicle.updatedDate = Date().timeIntervalSince1970
|
vehicle.updatedDate = Date().timeIntervalSince1970
|
||||||
vehicleResult.vehicle.synchronized = false
|
vehicle.synchronized = false
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if vehicleResult.error != nil {
|
||||||
return .just((vehicle: vehicleResult.vehicle, errors: errors))
|
return .just((vehicle: vehicleResult.vehicle, errors: errors))
|
||||||
} else {
|
} else {
|
||||||
if let event = eventResult.event {
|
if let event = eventResult.event {
|
||||||
@ -431,6 +433,10 @@ class CheckController: UIViewController, UITableViewDelegate, UITextFieldDelegat
|
|||||||
try self.save(vehicle: $0)
|
try self.save(vehicle: $0)
|
||||||
return (vehicle: $0, errors: errors)
|
return (vehicle: $0, errors: errors)
|
||||||
}
|
}
|
||||||
|
.catchError { error in
|
||||||
|
errors.append(error)
|
||||||
|
return .just((vehicle: vehicleResult.vehicle, errors: errors))
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return .just((vehicle: vehicleResult.vehicle, errors: errors))
|
return .just((vehicle: vehicleResult.vehicle, errors: errors))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,11 +12,13 @@ class EventPin: NSObject, MKAnnotation {
|
|||||||
var coordinate: CLLocationCoordinate2D
|
var coordinate: CLLocationCoordinate2D
|
||||||
var title: String?
|
var title: String?
|
||||||
var subtitle: String?
|
var subtitle: String?
|
||||||
|
var id: String
|
||||||
|
|
||||||
init(coordinate: CLLocationCoordinate2D, title: String?, subtitle: String) {
|
init(id: String, coordinate: CLLocationCoordinate2D, title: String?, subtitle: String) {
|
||||||
self.coordinate = coordinate
|
self.coordinate = coordinate
|
||||||
self.title = title
|
self.title = title
|
||||||
self.subtitle = subtitle
|
self.subtitle = subtitle
|
||||||
|
self.id = id
|
||||||
}
|
}
|
||||||
|
|
||||||
convenience init(event: VehicleEvent) {
|
convenience init(event: VehicleEvent) {
|
||||||
@ -29,9 +31,9 @@ class EventPin: NSObject, MKAnnotation {
|
|||||||
let dateStr = formatter.string(from: date)
|
let dateStr = formatter.string(from: date)
|
||||||
|
|
||||||
if let number = event.number {
|
if let number = event.number {
|
||||||
self.init(coordinate: coordinate, title: number, subtitle: dateStr)
|
self.init(id: event.id, coordinate: coordinate, title: number, subtitle: dateStr)
|
||||||
} else {
|
} else {
|
||||||
self.init(coordinate: coordinate, title: dateStr, subtitle: address)
|
self.init(id: event.id, coordinate: coordinate, title: dateStr, subtitle: address)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -189,6 +191,19 @@ class EventsController: UIViewController, UITableViewDataSource, UITableViewDele
|
|||||||
return configuration
|
return configuration
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
||||||
|
guard let event = self.vehicle?.events[indexPath.row],
|
||||||
|
let pin = pins.first(where: { $0.id == event.id }) else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
tableView.deselectRow(at: indexPath, animated: true)
|
||||||
|
switchMode(modeButton)
|
||||||
|
|
||||||
|
map.setCenter(pin.coordinate, animated: true)
|
||||||
|
map.selectAnnotation(pin, animated: true)
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: - Event actions
|
// MARK: - Event actions
|
||||||
|
|
||||||
func deleteEvent(index: Int, completion: ((Bool) -> Void)? = nil) {
|
func deleteEvent(index: Int, completion: ((Bool) -> Void)? = nil) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user