Fixing few GPS-related bugs

This commit is contained in:
Selim Mustafaev 2020-09-06 13:14:47 +03:00
parent d95bbe51e2
commit 21e18649ba
9 changed files with 53 additions and 27 deletions

View File

@ -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;

View File

@ -8,7 +8,7 @@
BreakpointExtensionID = "Xcode.Breakpoint.SwiftErrorBreakpoint">
<BreakpointContent
uuid = "C14D0996-5708-44D2-A6BA-4A4B50B522EE"
shouldBeEnabled = "Yes"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No">
</BreakpointContent>
@ -63,22 +63,6 @@
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "CDE92976-A8B4-4D3D-95F5-C2E8876C0601"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "AutoCat/Utils/Api.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "167"
endingLineNumber = "167"
landmarkName = "add(event:to:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent

View File

@ -18,7 +18,7 @@ class VehicleCell: UITableViewCell {
func configure(with vehicle: Vehicle) {
self.name.text = vehicle.brand?.name?.original ?? "<unknown>"
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))
}

View File

@ -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)

View File

@ -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)

View File

@ -51,7 +51,7 @@ class MainSplitController: UISplitViewController, UISplitViewControllerDelegate
return false
}
if detail.vehicle == nil {
if detail.number == nil {
return false
}

View File

@ -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() {

View File

@ -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)
}

View File

@ -138,4 +138,8 @@ class Vehicle: Object, Decodable, IdentifiableType {
override static func primaryKey() -> String? {
return "number"
}
var unrecognized: Bool {
return self.brand == nil
}
}