Adding stubs for VehicleService

This commit is contained in:
Selim Mustafaev 2025-01-19 17:26:22 +03:00
parent bc88a7bb0e
commit 3cc2ef2101
7 changed files with 72 additions and 7 deletions

View File

@ -148,6 +148,8 @@
7AB4E42C2D397D8E0006D052 /* VehicleCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AB4E42B2D397D8E0006D052 /* VehicleCellView.swift */; };
7AB4E4332D3C21C00006D052 /* FileManagerExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AB4E4322D3C21C00006D052 /* FileManagerExt.swift */; };
7AB4E4382D3D0C5C0006D052 /* VehiclesArchive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AB4E4372D3D0C5C0006D052 /* VehiclesArchive.swift */; };
7AB4E43B2D3D3F4F0006D052 /* VehicleServiceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AB4E43A2D3D3F4F0006D052 /* VehicleServiceProtocol.swift */; };
7AB4E43D2D3D3F7A0006D052 /* VehicleService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AB4E43C2D3D3F7A0006D052 /* VehicleService.swift */; };
7AB5871D2C42C1CF00FA7B66 /* RealmSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 7AB5871C2C42C1CF00FA7B66 /* RealmSwift */; };
7AB587322C42D38E00FA7B66 /* StorageServiceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AB587312C42D38E00FA7B66 /* StorageServiceProtocol.swift */; };
7AB587342C42D3FA00FA7B66 /* StorageService+Notes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AB587332C42D3FA00FA7B66 /* StorageService+Notes.swift */; };
@ -421,6 +423,8 @@
7AB4E42B2D397D8E0006D052 /* VehicleCellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VehicleCellView.swift; sourceTree = "<group>"; };
7AB4E4322D3C21C00006D052 /* FileManagerExt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileManagerExt.swift; sourceTree = "<group>"; };
7AB4E4372D3D0C5C0006D052 /* VehiclesArchive.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VehiclesArchive.swift; sourceTree = "<group>"; };
7AB4E43A2D3D3F4F0006D052 /* VehicleServiceProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VehicleServiceProtocol.swift; sourceTree = "<group>"; };
7AB4E43C2D3D3F7A0006D052 /* VehicleService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VehicleService.swift; sourceTree = "<group>"; };
7AB562B9249C9E9B00473D53 /* VehicleRegion.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VehicleRegion.swift; sourceTree = "<group>"; };
7AB587222C42D27F00FA7B66 /* AutoCatTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AutoCatTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
7AB587312C42D38E00FA7B66 /* StorageServiceProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StorageServiceProtocol.swift; sourceTree = "<group>"; };
@ -765,6 +769,7 @@
7A45FB362C2706D000618694 /* Services */ = {
isa = PBXGroup;
children = (
7AB4E4392D3D3F390006D052 /* VehicleService */,
7A06E0B12C707DD7005731AC /* SettingsService */,
7A60D24B2C5A9D2700D13F7B /* LocationService */,
7AB5873D2C42FF4000FA7B66 /* ApiService */,
@ -952,6 +957,15 @@
path = ACImageSlider;
sourceTree = "<group>";
};
7AB4E4392D3D3F390006D052 /* VehicleService */ = {
isa = PBXGroup;
children = (
7AB4E43A2D3D3F4F0006D052 /* VehicleServiceProtocol.swift */,
7AB4E43C2D3D3F7A0006D052 /* VehicleService.swift */,
);
path = VehicleService;
sourceTree = "<group>";
};
7AB587302C42D35900FA7B66 /* StorageService */ = {
isa = PBXGroup;
children = (
@ -1450,6 +1464,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
7AB4E43D2D3D3F7A0006D052 /* VehicleService.swift in Sources */,
7A5D84C22C1AE5C900C2209B /* VehicleModel.swift in Sources */,
7A5D84B92C1AD3C200C2209B /* DtoConvertible.swift in Sources */,
7AF6D2182677C1680086EA64 /* VehicleAd.swift in Sources */,
@ -1490,6 +1505,7 @@
7AB4E4332D3C21C00006D052 /* FileManagerExt.swift in Sources */,
7AB587322C42D38E00FA7B66 /* StorageServiceProtocol.swift in Sources */,
7A3E12D72C7B42B700EE710D /* UserDefaults+Settings.swift in Sources */,
7AB4E43B2D3D3F4F0006D052 /* VehicleServiceProtocol.swift in Sources */,
7AA514E02D0B75B3001CAC50 /* StorageService+Events.swift in Sources */,
7A64A2222C19E99E00284124 /* DebugInfoDto.swift in Sources */,
7A5D84BC2C1AD81000C2209B /* VehicleOwnershipPeriod.swift in Sources */,

View File

@ -5,6 +5,7 @@ import AutoCatCore
class MainTabController: UITabBarController, UITabBarControllerDelegate {
var settingsCoordinator: SettingsCoordinator?
var historyViewModel: HistoryViewModel?
override func viewDidLoad() {
super.viewDidLoad()
@ -30,10 +31,11 @@ class MainTabController: UITabBarController, UITabBarControllerDelegate {
func setupHistoryTab() {
let coordinator = HistoryCoordinator()
let controller = coordinator.start()
let (controller, viewModel) = coordinator.start()
controller.tabBarItem = UITabBarItem(title: NSLocalizedString("History", comment: ""),
image: UIImage(systemName: "clock.arrow.circlepath"), tag: 0)
viewControllers?[0] = controller
historyViewModel = viewModel
}
func addSettings() async {
@ -53,9 +55,7 @@ class MainTabController: UITabBarController, UITabBarControllerDelegate {
}
func showCheckPuller() {
guard let checkNav = viewControllers?.first as? UINavigationController,
let checkController = checkNav.viewControllers.first as? CheckController
else {
guard let historyViewModel else {
return
}
@ -74,7 +74,7 @@ class MainTabController: UITabBarController, UITabBarControllerDelegate {
newNumberController.onCheck = { number in
SwiftEntryKit.dismiss {
self.selectedIndex = 0
checkController.checkTapped(number: number)
Task { await historyViewModel.checkNewNumber(number) }
}
}

View File

@ -55,6 +55,8 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
container.register(StorageServiceProtocol.self,
instance: try await StorageService(settingsService: settingsService))
container.register(VehicleServiceProtocol.self, instance: VehicleService())
}
func setupRootController(scene: UIScene) {

View File

@ -15,12 +15,13 @@ final class HistoryCoordinator {
var navController: UINavigationController?
func start() -> UIViewController {
func start() -> (UIViewController, HistoryViewModel) {
let resolver = ServiceContainer.shared
let viewModel = HistoryViewModel(
apiService: resolver.resolve(ApiServiceProtocol.self),
storageService: resolver.resolve(StorageServiceProtocol.self),
vehicleService: resolver.resolve(VehicleServiceProtocol.self),
coordinator: self
)
@ -30,7 +31,7 @@ final class HistoryCoordinator {
let navController = UINavigationController(rootViewController: controller)
self.navController = navController
return navController
return (navController, viewModel)
}
func openReport(vehicle: VehicleDto) async {

View File

@ -15,6 +15,7 @@ final class HistoryViewModel: ACHudContainer {
let apiService: ApiServiceProtocol
let storageService: StorageServiceProtocol
let vehicleService: VehicleServiceProtocol
let coordinator: HistoryCoordinator?
var hud: ACHud?
@ -45,10 +46,12 @@ final class HistoryViewModel: ACHudContainer {
init(apiService: ApiServiceProtocol,
storageService: StorageServiceProtocol,
vehicleService: VehicleServiceProtocol,
coordinator: HistoryCoordinator) {
self.apiService = apiService
self.storageService = storageService
self.vehicleService = vehicleService
self.coordinator = coordinator
Task { await loadVehicles() }
@ -104,4 +107,10 @@ final class HistoryViewModel: ACHudContainer {
}
}
}
func checkNewNumber(_ number: String) async {
await wrapWithToast { [weak self] in
try await self?.vehicleService.checkAndStore(number: number)
}
}
}

View File

@ -0,0 +1,24 @@
//
// VehicleService.swift
// AutoCatCore
//
// Created by Selim Mustafaev on 19.01.2025.
// Copyright © 2025 Selim Mustafaev. All rights reserved.
//
public final class VehicleService {
public init() {}
}
extension VehicleService: VehicleServiceProtocol {
public func check(number: String) async throws -> VehicleDto {
VehicleDto()
}
public func checkAndStore(number: String) async throws {
}
}

View File

@ -0,0 +1,13 @@
//
// VehicleServiceProtocol.swift
// AutoCatCore
//
// Created by Selim Mustafaev on 19.01.2025.
// Copyright © 2025 Selim Mustafaev. All rights reserved.
//
public protocol VehicleServiceProtocol: Sendable {
func check(number: String) async throws -> VehicleDto
func checkAndStore(number: String) async throws
}