diff --git a/AutoCat.xcodeproj/project.pbxproj b/AutoCat.xcodeproj/project.pbxproj
index 10553d1..44e28f2 100644
--- a/AutoCat.xcodeproj/project.pbxproj
+++ b/AutoCat.xcodeproj/project.pbxproj
@@ -707,7 +707,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = AutoCat/AutoCat.entitlements;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 22;
+ CURRENT_PROJECT_VERSION = 23;
DEVELOPMENT_TEAM = 46DTTB8X4S;
INFOPLIST_FILE = AutoCat/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
@@ -729,7 +729,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = AutoCat/AutoCat.entitlements;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 22;
+ CURRENT_PROJECT_VERSION = 23;
DEVELOPMENT_TEAM = 46DTTB8X4S;
INFOPLIST_FILE = AutoCat/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
diff --git a/AutoCat.xcodeproj/xcuserdata/selim.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/AutoCat.xcodeproj/xcuserdata/selim.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
index 5ba1623..8efb0be 100644
--- a/AutoCat.xcodeproj/xcuserdata/selim.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
+++ b/AutoCat.xcodeproj/xcuserdata/selim.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -8,7 +8,7 @@
BreakpointExtensionID = "Xcode.Breakpoint.SwiftErrorBreakpoint">
@@ -63,22 +63,6 @@
landmarkType = "7">
-
-
-
-
"
self.plate.number = PlateNumber(vehicle.number)
- self.plate.unrecognized = vehicle.brand == nil
+ self.plate.unrecognized = vehicle.unrecognized
self.date.text = formatter.string(from: Date(timeIntervalSince1970: vehicle.addedDate/1000))
}
diff --git a/AutoCat/Controllers/CheckController.swift b/AutoCat/Controllers/CheckController.swift
index 993382f..d11d574 100644
--- a/AutoCat/Controllers/CheckController.swift
+++ b/AutoCat/Controllers/CheckController.swift
@@ -115,9 +115,20 @@ class CheckController: UIViewController, MaskedTextFieldDelegateListener, UITabl
self.onReceivedVehicle(vehicle, event: event)
}, onError: { err in
if let realm = try? Realm() {
+ let vehicle = Vehicle(number)
try? realm.write {
- realm.add(Vehicle(number), update: .all)
+ realm.add(vehicle, update: .all)
}
+ let eventSingle = event == nil ? self.getEvent() : Single.just(event!)
+ eventSingle
+ .flatMap { event in event.updateAddress().map{ [event] }.catchErrorJustReturn([event]) }
+ .catchErrorJustReturn([])
+ .subscribe(onSuccess: { events in
+ try? realm.write {
+ vehicle.events.append(objectsIn: events)
+ }
+ })
+ .disposed(by: self.bag)
}
IHProgressHUD.showError(withStatus: err.localizedDescription)
print(err.localizedDescription)
@@ -170,7 +181,7 @@ class CheckController: UIViewController, MaskedTextFieldDelegateListener, UITabl
if let detail = detail {
detail.popToRootViewController(animated: true)
let report = detail.viewControllers.first as? ReportController
- report?.vehicle = vehicle
+ report?.number = vehicle.number
splitViewController.showDetailViewController(detail, sender: self)
//self.performSegue(withIdentifier: "OpenDetailSegue", sender: self)
}
@@ -201,10 +212,16 @@ class CheckController: UIViewController, MaskedTextFieldDelegateListener, UITabl
let updateAction = UIContextualAction(style: .normal, title: "Update") { action, view, completion in
IHProgressHUD.show()
+
+ var event: VehicleEvent? = nil
+ if vehicle.unrecognized, let savedEvent = vehicle.events.first {
+ event = savedEvent
+ }
+
Api.checkVehicle(by: vehicle.number, force: true)
.observeOn(MainScheduler.instance)
.subscribe(onSuccess: { vehicle in
- self.onReceivedVehicle(vehicle, event: nil)
+ self.onReceivedVehicle(vehicle, event: event)
}, onError: { err in
IHProgressHUD.showError(withStatus: err.localizedDescription)
print(err.localizedDescription)
diff --git a/AutoCat/Controllers/EventsController.swift b/AutoCat/Controllers/EventsController.swift
index 784bcfc..23dfdfd 100644
--- a/AutoCat/Controllers/EventsController.swift
+++ b/AutoCat/Controllers/EventsController.swift
@@ -37,6 +37,10 @@ class EventsController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
+ #if targetEnvironment(macCatalyst)
+ self.map.showsZoomControls = true
+ #endif
+
self.map.addAnnotations(self.pins)
self.centerMap()
}
@@ -53,7 +57,10 @@ class EventsController: UIViewController {
let center = CLLocationCoordinate2D(latitude: (minLat + maxLat)/2, longitude: (minLon + maxLon)/2)
let leftTop = CLLocation(latitude: minLat, longitude: minLon)
let rightBottom = CLLocation(latitude: maxLat, longitude: maxLon)
- let diagonal = leftTop.distance(from: rightBottom)
+ var diagonal = leftTop.distance(from: rightBottom)
+ if diagonal < 1000 {
+ diagonal = 1000
+ }
let region = MKCoordinateRegion(center: center, latitudinalMeters: diagonal, longitudinalMeters: diagonal)
self.map.setRegion(region, animated: true)
diff --git a/AutoCat/Controllers/MainSplitController.swift b/AutoCat/Controllers/MainSplitController.swift
index 15c947a..0a01342 100644
--- a/AutoCat/Controllers/MainSplitController.swift
+++ b/AutoCat/Controllers/MainSplitController.swift
@@ -51,7 +51,7 @@ class MainSplitController: UISplitViewController, UISplitViewControllerDelegate
return false
}
- if detail.vehicle == nil {
+ if detail.number == nil {
return false
}
diff --git a/AutoCat/Controllers/ReportController.swift b/AutoCat/Controllers/ReportController.swift
index 2524521..1becca9 100644
--- a/AutoCat/Controllers/ReportController.swift
+++ b/AutoCat/Controllers/ReportController.swift
@@ -2,6 +2,7 @@ import UIKit
import MagazineLayout
import Kingfisher
import LinkPresentation
+import RealmSwift
enum ReportSection: Int, CaseIterable, CustomStringConvertible {
case header = 0
@@ -86,7 +87,7 @@ class ReportController: UIViewController, UICollectionViewDataSource, UICollecti
private let fullWidth = MagazineLayoutItemSizeMode(widthMode: .fullWidth(respectsHorizontalInsets: true), heightMode: .dynamic)
private var reportImageUrl: URL?
- var vehicle: Vehicle? {
+ private var vehicle: Vehicle? {
didSet {
loadViewIfNeeded()
self.collection.reloadData()
@@ -94,6 +95,19 @@ class ReportController: UIViewController, UICollectionViewDataSource, UICollecti
}
}
+ private var notificationToken: NotificationToken?
+ var number: String? {
+ didSet {
+ if let realm = try? Realm(), let num = number {
+ let vehicles = realm.objects(Vehicle.self).filter("number = %@", num)
+ self.notificationToken?.invalidate()
+ self.notificationToken = vehicles.observe { _ in self.vehicle = vehicles.first }
+ } else {
+ self.vehicle = nil
+ }
+ }
+ }
+
// MARK: - Lifecycle
override func viewDidLoad() {
diff --git a/AutoCat/Controllers/SearchController.swift b/AutoCat/Controllers/SearchController.swift
index d2a7f4b..eda2e89 100644
--- a/AutoCat/Controllers/SearchController.swift
+++ b/AutoCat/Controllers/SearchController.swift
@@ -67,7 +67,7 @@ class SearchController: UIViewController, UISearchResultsUpdating {
if let detail = detail {
detail.popToRootViewController(animated: true)
let report = detail.viewControllers.first as? ReportController
- report?.vehicle = vehicle
+ report?.number = vehicle.number
splitViewController.showDetailViewController(detail, sender: self)
//self.performSegue(withIdentifier: "OpenDetailSegue", sender: self)
}
diff --git a/AutoCat/Models/Vehicle.swift b/AutoCat/Models/Vehicle.swift
index 97be39c..4a91ae0 100644
--- a/AutoCat/Models/Vehicle.swift
+++ b/AutoCat/Models/Vehicle.swift
@@ -138,4 +138,8 @@ class Vehicle: Object, Decodable, IdentifiableType {
override static func primaryKey() -> String? {
return "number"
}
+
+ var unrecognized: Bool {
+ return self.brand == nil
+ }
}