47 lines
1.4 KiB
Swift
47 lines
1.4 KiB
Swift
//
|
|
// LocationPickerViewModel.swift
|
|
// AutoCat
|
|
//
|
|
// Created by Selim Mustafaev on 27.07.2024.
|
|
// Copyright © 2024 Selim Mustafaev. All rights reserved.
|
|
//
|
|
|
|
import AutoCatCore
|
|
import Combine
|
|
import MapKit
|
|
import SwiftUI
|
|
|
|
@MainActor
|
|
final class LocationPickerViewModel: ObservableObject {
|
|
|
|
let locationService: LocationServiceProtocol
|
|
|
|
@Published var event: VehicleEventDto
|
|
@Published var position: MapCameraPosition
|
|
|
|
var result: VehicleEventDto?
|
|
|
|
init(event: VehicleEventDto, locationService: LocationServiceProtocol) {
|
|
self.event = event
|
|
self.locationService = locationService
|
|
|
|
if event.latitude == 0 && event.longitude == 0 {
|
|
self.position = .userLocation(fallback: .automatic)
|
|
} else {
|
|
let center = CLLocationCoordinate2D(latitude: event.latitude, longitude: event.longitude)
|
|
self.position = .region(.init(center: center, latitudinalMeters: 1000, longitudinalMeters: 1000))
|
|
}
|
|
}
|
|
|
|
func updateEvent(center: CLLocationCoordinate2D) async {
|
|
event.latitude = center.latitude
|
|
event.longitude = center.longitude
|
|
event.address = try? await locationService.getAddressForLocation(latitude: center.latitude,
|
|
longitude: center.longitude)
|
|
}
|
|
|
|
func done() {
|
|
result = event
|
|
}
|
|
}
|