AutoCat/AutoCat/Screens/LocationPickerScreen/LocationPickerViewModel.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
}
}