87 lines
2.7 KiB
Swift
87 lines
2.7 KiB
Swift
//
|
|
// AutoCatApp.swift
|
|
// AutoCat
|
|
//
|
|
// Created by Selim Mustafaev on 20.04.2025.
|
|
// Copyright © 2025 Selim Mustafaev. All rights reserved.
|
|
//
|
|
|
|
import SwiftUI
|
|
import AutoCatCore
|
|
import SwiftLocation
|
|
import CoreLocation
|
|
|
|
@main
|
|
struct AutoCatApp: App {
|
|
|
|
@State var diReady: Bool = false
|
|
@State var settingsService: SettingsServiceProtocol?
|
|
|
|
var body: some Scene {
|
|
WindowGroup {
|
|
if diReady {
|
|
if settingsService?.user.token.isEmpty == false {
|
|
mainScreen
|
|
} else {
|
|
AuthScreen()
|
|
}
|
|
} else {
|
|
Text("")
|
|
.task {
|
|
try! await registerServices()
|
|
diReady = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@ViewBuilder
|
|
var mainScreen: some View {
|
|
if Device.isIPhone {
|
|
MainTabScreen()
|
|
} else {
|
|
MainSplitScreen()
|
|
}
|
|
}
|
|
|
|
func registerServices() async throws {
|
|
|
|
let container = ServiceContainer.shared
|
|
|
|
let settingsService = await SettingsService()
|
|
self.settingsService = settingsService
|
|
|
|
container.register(SettingsServiceProtocol.self, instance: settingsService)
|
|
|
|
let apiService = ApiService(settingsService: settingsService)
|
|
container.register(ApiServiceProtocol.self, instance: apiService)
|
|
|
|
let locationService = LocationService(
|
|
geocoder: CLGeocoder(),
|
|
locationManager: Location(),
|
|
settingsService: settingsService
|
|
)
|
|
|
|
container.register(LocationServiceProtocol.self, instance: locationService)
|
|
|
|
let storageService = try await StorageService(settingsService: settingsService)
|
|
container.register(StorageServiceProtocol.self, instance: storageService)
|
|
|
|
let vehicleService = VehicleService(apiService: apiService,
|
|
storageService: storageService,
|
|
locationService: locationService)
|
|
container.register(VehicleServiceProtocol.self, instance: vehicleService)
|
|
|
|
let audioRecordService = AudioRecordService()
|
|
container.register(AudioRecordServiceProtocol.self, instance: audioRecordService)
|
|
|
|
let vehicleRecordService = VehicleRecordService(
|
|
recordService: audioRecordService,
|
|
locationService: locationService,
|
|
settingsService: settingsService
|
|
)
|
|
container.register(VehicleRecordServiceProtocol.self, instance: vehicleRecordService)
|
|
container.register(RecordPlayerServiceProtocol.self, instance: RecordPlayerService())
|
|
}
|
|
}
|