diff --git a/.swiftlint.yml b/.swiftlint.yml index 9b0bd349..e274dc8b 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -1,5 +1,6 @@ excluded: # 린트 과정에서 무시할 파일 경로. `included`보다 우선순위 높음 - Projects/App/Sources/AppDelegate.swift + - Projects/App/Sources/AppDelegate+Register.swift - Projects/App/Sources/SceneDelegate.swift - Projects/App/Tests/** - Projects/Core/Sources/Extension/String+.swift @@ -29,7 +30,7 @@ file_length: warning: 1000 error: 2000 line_length: - warning: 80 + warning: 90 error: 400 disabled_rules: # 제외하고 싶은 룰 - trailing_whitespace diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/InfoPlistBuildable/InfoPlist/WhereMyBusInfoPlist.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/InfoPlistBuildable/InfoPlist/WhereMyBusInfoPlist.swift deleted file mode 100644 index 26b60f3c..00000000 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/InfoPlistBuildable/InfoPlist/WhereMyBusInfoPlist.swift +++ /dev/null @@ -1,16 +0,0 @@ -// -// WhereMyBusInfoPlist.swift -// EnvironmentPlugin -// -// Created by gnksbm on 4/11/25. -// - -import Foundation - - - - - - - - diff --git a/Projects/App/Sources/AppDelegate+Register.swift b/Projects/App/Sources/AppDelegate+Register.swift index 0c274662..e2917c44 100644 --- a/Projects/App/Sources/AppDelegate+Register.swift +++ b/Projects/App/Sources/AppDelegate+Register.swift @@ -17,92 +17,29 @@ import FirebaseModule extension AppDelegate { func registerDependencies() { - let coreDataService: CoreDataService = DefaultCoreDataService() - let networkService: NetworkService = DefaultNetworkService() - let locationService: LocationService = DefaultLocationService() - - let favoritesRepository: FavoritesRepository - = DefaultFavoritesRepository( - coreDataService: coreDataService, - networkService: networkService - ) - let busStopArrivalInfoRepository: BusStopArrivalInfoRepository - = DefaultBusStopArrivalInfoRepository(networkService: networkService) - let stationListRepository: StationListRepository - = DefaultStationListRepository() - let regularAlarmRepository: RegularAlarmRepository - = DefaultRegularAlarmRepository( - coreDataService: coreDataService, - networkService: networkService - ) - let localNotificationService: LocalNotificationService - = DefaultLocalNotificationService() - let regularAlarmEditingService: RegularAlarmEditingService - = DefaultRegularAlarmEditingService() - // TODO: 추후 의존 주입 형태 변경 -// let versionCheckRepository: VersionCheckRepository -// = DefaultVersionCheckRepository(networkService: networkService) - - DIContainer.register( - type: FavoritesUseCase.self, - DefaultFavoritesUseCase( - busStopArrivalInfoRepository: busStopArrivalInfoRepository, - favoritesRepository: favoritesRepository - ) - ) - - DIContainer.register( - type: RegularAlarmUseCase.self, - DefaultRegularAlarmUseCase( - localNotificationService: localNotificationService, - regularAlarmRepository: regularAlarmRepository - ) - ) - - DIContainer.register( - type: AddRegularAlarmUseCase.self, - DefaultAddRegularAlarmUseCase( - localNotificationService: localNotificationService, - regularAlarmRepository: regularAlarmRepository - ) - ) - - DIContainer.register( - type: SearchUseCase.self, - DefaultSearchUseCase( - stationListRepository: stationListRepository, - locationService: locationService - ) - ) - - DIContainer.register( - type: BusStopUseCase.self, - DefaultBusStopUseCase( - busStopArrivalInfoRepository: busStopArrivalInfoRepository, - favoritesRepository: favoritesRepository, - regularAlarmEditingService: regularAlarmEditingService - ) - ) - - DIContainer.register( - type: NearMapUseCase.self, - DefaultNearMapUseCase( - stationListRepository: stationListRepository, - locationService: locationService - ) - ) - - DIContainer.register( - type: RegularAlarmEditingService.self, - regularAlarmEditingService - ) - -// DIContainer.register( -// type: VersionCheckUseCase.self, -// DefaultVersionCheckUseCase( -// versionCheckRepository: versionCheckRepository -// ) -// ) - DIContainer.register(type: FirebaseLogger.self, FirebaseLoggerImpl()) + let firebaseLogger = FirebaseLoggerImpl() + DIContainer.setLogger(firebaseLogger) + + DIContainer.register(type: ForceUpdateService.self, DefaultForceUpdateService()) + DIContainer.register(type: CoreDataService.self, DefaultCoreDataService()) + DIContainer.register(type: NetworkService.self, DefaultNetworkService()) + DIContainer.register(type: LocationService.self, DefaultLocationService()) + + DIContainer.register(type: FavoritesRepository.self, DefaultFavoritesRepository()) + DIContainer.register(type: BusStopArrivalInfoRepository.self, DefaultBusStopArrivalInfoRepository()) + DIContainer.register(type: StationListRepository.self, DefaultStationListRepository()) + DIContainer.register(type: RegularAlarmRepository.self, DefaultRegularAlarmRepository()) + DIContainer.register(type: LocalNotificationService.self, DefaultLocalNotificationService()) + DIContainer.register(type: RegularAlarmEditingService.self, DefaultRegularAlarmEditingService()) + DIContainer.register(type: VersionCheckRepository.self, DefaultVersionCheckRepository()) + + DIContainer.register(type: FavoritesUseCase.self, DefaultFavoritesUseCase()) + DIContainer.register(type: RegularAlarmUseCase.self, DefaultRegularAlarmUseCase()) + DIContainer.register(type: AddRegularAlarmUseCase.self, DefaultAddRegularAlarmUseCase()) + DIContainer.register(type: SearchUseCase.self, DefaultSearchUseCase()) + DIContainer.register(type: BusStopUseCase.self, DefaultBusStopUseCase()) + DIContainer.register(type: NearMapUseCase.self, DefaultNearMapUseCase()) + DIContainer.register(type: FirebaseLogger.self, firebaseLogger) + DIContainer.register(type: VersionCheckUseCase.self, DefaultVersionCheckUseCase()) } } diff --git a/Projects/App/Sources/SceneDelegate.swift b/Projects/App/Sources/SceneDelegate.swift index 6b7f028b..31057209 100644 --- a/Projects/App/Sources/SceneDelegate.swift +++ b/Projects/App/Sources/SceneDelegate.swift @@ -16,20 +16,14 @@ import Data import RxSwift final class SceneDelegate: UIResponder, UIWindowSceneDelegate { + @Injected private var useCase: VersionCheckUseCase + var window: UIWindow? var appCoordinator: AppCoordinator? var deeplinkHandler: DeeplinkHandler? let disposeBag = DisposeBag() - // MARK: 추후 구체타입이 아닌 형태로 변경 - private var useCase: VersionCheckUseCase - = DefaultVersionCheckUseCase( - versionCheckRepository: DefaultVersionCheckRepository( - networkService: DefaultNetworkService() - ), - forceUpdateService: DefaultForceUpdateService() - ) func scene( _ scene: UIScene, diff --git a/Projects/Core/Sources/DIContainer/DIContainer.swift b/Projects/Core/Sources/DIContainer/DIContainer.swift index e9208404..da68af4c 100644 --- a/Projects/Core/Sources/DIContainer/DIContainer.swift +++ b/Projects/Core/Sources/DIContainer/DIContainer.swift @@ -8,19 +8,33 @@ import Foundation -public final class DIContainer { - static var storage: [String: Any] = [:] - - private init() { } +import FirebaseInterface + +public enum DIContainer { + private static var storage: [String: Any] = [:] + private static var lock: NSLock = .init() + private static var firebaseLogger: FirebaseLogger? + public static func setLogger(_ logger: FirebaseLogger) { + firebaseLogger = logger + } - public static func register(type: T.Type, _ object: T) { - storage["\(type)"] = object + public static func register( + type: Dependency.Type, + _ instance: Dependency + ) { + lock.lock() + defer { lock.unlock() } + storage[String(describing: Dependency.self)] = instance } - static func resolve(type: T.Type) -> T { - guard let object = storage["\(type)"] as? T else { + static func resolve(type: Dependency.Type) -> Dependency { + let typeName = String(describing: Dependency.self) + lock.lock() + defer { lock.unlock() } + guard let savedInstance = storage[typeName] as? Dependency else { + firebaseLogger?.log(name: "DependencyCrash", parameter: ["type": typeName]) fatalError("register 되지 않은 객체 호출: \(type)") } - return object + return savedInstance } } diff --git a/Projects/Core/Sources/DIContainer/Injected.swift b/Projects/Core/Sources/DIContainer/Injected.swift index 2432c601..248ca3d6 100644 --- a/Projects/Core/Sources/DIContainer/Injected.swift +++ b/Projects/Core/Sources/DIContainer/Injected.swift @@ -9,14 +9,10 @@ import Foundation @propertyWrapper -public struct Injected { - private var type: T.Type - - public var wrappedValue: T { - DIContainer.resolve(type: type) +public struct Injected { + public var wrappedValue: Dependency { + DIContainer.resolve(type: Dependency.self) } - public init(_ type: T.Type) { - self.type = type - } + public init() { } } diff --git a/Projects/CoreDataService/Sources/CoreDataService.swift b/Projects/CoreDataService/Sources/CoreDataService.swift index 1c1f0ebb..b592b881 100644 --- a/Projects/CoreDataService/Sources/CoreDataService.swift +++ b/Projects/CoreDataService/Sources/CoreDataService.swift @@ -15,10 +15,7 @@ import RxSwift public protocol CoreDataService { var storeStatus: BehaviorSubject { get } - func fetch( - type: T.Type - ) -> Observable<[T]> -// func fetch(type: T.Type) throws -> [T] + func fetch(type: T.Type) -> Observable<[T]> func save(data: some CoreDataStorable) throws diff --git a/Projects/Data/Sources/Repository/DefaultBusStopArrivalInfoRepository.swift b/Projects/Data/Sources/Repository/DefaultBusStopArrivalInfoRepository.swift index 1730d601..07ed5cfa 100644 --- a/Projects/Data/Sources/Repository/DefaultBusStopArrivalInfoRepository.swift +++ b/Projects/Data/Sources/Repository/DefaultBusStopArrivalInfoRepository.swift @@ -15,18 +15,11 @@ import NetworkService import RxSwift import FirebaseInterface -public final class DefaultBusStopArrivalInfoRepository: - NSObject, BusStopArrivalInfoRepository { - private let networkService: NetworkService - @Injected(FirebaseLogger.self) private var logger: FirebaseLogger - private let disposeBag = DisposeBag() +public final class DefaultBusStopArrivalInfoRepository: NSObject, BusStopArrivalInfoRepository { + @Injected private var networkService: NetworkService + @Injected private var logger: FirebaseLogger - public init(networkService: NetworkService) { - self.networkService = networkService - } - - public func fetchArrivalList(busStopId: String) -> - Observable { + public func fetchArrivalList(busStopId: String) -> Observable { logger.log(name: "fetchArrivalEvent") return networkService.request( endPoint: BusStopArrivalInfoEndPoint(arsId: busStopId) diff --git a/Projects/Data/Sources/Repository/DefaultFavoritesRepository.swift b/Projects/Data/Sources/Repository/DefaultFavoritesRepository.swift index 5299a294..cf8bf96c 100644 --- a/Projects/Data/Sources/Repository/DefaultFavoritesRepository.swift +++ b/Projects/Data/Sources/Repository/DefaultFavoritesRepository.swift @@ -11,23 +11,19 @@ import Foundation import CoreDataService import Domain import NetworkService +import Core import RxSwift public final class DefaultFavoritesRepository: FavoritesRepository { - private let coreDataService: CoreDataService - private let networkService: NetworkService + @Injected private var coreDataService: CoreDataService + @Injected private var networkService: NetworkService public var favorites = BehaviorSubject<[FavoritesBusResponse]>(value: []) private let disposeBag = DisposeBag() - public init( - coreDataService: CoreDataService, - networkService: NetworkService - ) { - self.coreDataService = coreDataService - self.networkService = networkService + public init() { bindStoreStatus() } diff --git a/Projects/Data/Sources/Repository/DefaultRegularAlarmRepository.swift b/Projects/Data/Sources/Repository/DefaultRegularAlarmRepository.swift index ca794ba4..a3afef40 100644 --- a/Projects/Data/Sources/Repository/DefaultRegularAlarmRepository.swift +++ b/Projects/Data/Sources/Repository/DefaultRegularAlarmRepository.swift @@ -11,24 +11,20 @@ import Foundation import CoreDataService import Domain import NetworkService +import Core import RxSwift public final class DefaultRegularAlarmRepository: RegularAlarmRepository { - private let coreDataService: CoreDataService - private let networkService: NetworkService + @Injected private var coreDataService: CoreDataService + @Injected private var networkService: NetworkService public let currentRegularAlarm = BehaviorSubject<[RegularAlarmResponse]>( value: [] ) private let disposeBag = DisposeBag() - public init( - coreDataService: CoreDataService, - networkService: NetworkService - ) { - self.coreDataService = coreDataService - self.networkService = networkService + public init() { bindStoreStatus() } diff --git a/Projects/Data/Sources/Repository/DefaultVersionCheckRepository.swift b/Projects/Data/Sources/Repository/DefaultVersionCheckRepository.swift index 3575999b..c3b5e934 100644 --- a/Projects/Data/Sources/Repository/DefaultVersionCheckRepository.swift +++ b/Projects/Data/Sources/Repository/DefaultVersionCheckRepository.swift @@ -15,7 +15,7 @@ import NetworkService import RxSwift public final class DefaultVersionCheckRepository: VersionCheckRepository { - private let networkService: NetworkService + @Injected private var networkService: NetworkService @UserDefaultsWrapper( key: "ForceUpdate", @@ -26,9 +26,7 @@ public final class DefaultVersionCheckRepository: VersionCheckRepository { ) private var forceUpdateInfo: ForceUpdate - public init(networkService: NetworkService) { - self.networkService = networkService - } + public init() { } /// 서버로 부터 받은 App의 최소 지원 버전 public func fetchRequiredVersion() diff --git a/Projects/Data/Sources/Service/ForceUpdateService/DefaultForceUpdateService.swift b/Projects/Data/Sources/Service/ForceUpdateService/DefaultForceUpdateService.swift index 74a2083f..9db22d53 100644 --- a/Projects/Data/Sources/Service/ForceUpdateService/DefaultForceUpdateService.swift +++ b/Projects/Data/Sources/Service/ForceUpdateService/DefaultForceUpdateService.swift @@ -11,7 +11,6 @@ import Foundation import Domain public final class DefaultForceUpdateService: ForceUpdateService { - public init() { } public func compareVersion( diff --git a/Projects/Domain/Sources/UseCase/DefaultAddRegularAlarmUseCase.swift b/Projects/Domain/Sources/UseCase/DefaultAddRegularAlarmUseCase.swift index 6b4d5d78..6438f64b 100644 --- a/Projects/Domain/Sources/UseCase/DefaultAddRegularAlarmUseCase.swift +++ b/Projects/Domain/Sources/UseCase/DefaultAddRegularAlarmUseCase.swift @@ -8,19 +8,15 @@ import Foundation +import Core + import RxSwift public final class DefaultAddRegularAlarmUseCase: AddRegularAlarmUseCase { - private let localNotificationService: LocalNotificationService - private let regularAlarmRepository: RegularAlarmRepository + @Injected private var localNotificationService: LocalNotificationService + @Injected private var regularAlarmRepository: RegularAlarmRepository - public init( - localNotificationService: LocalNotificationService, - regularAlarmRepository: RegularAlarmRepository - ) { - self.localNotificationService = localNotificationService - self.regularAlarmRepository = regularAlarmRepository - } + public init() { } public func checkNotificationAuth() { localNotificationService.authorize() diff --git a/Projects/Domain/Sources/UseCase/DefaultBusStopUseCase.swift b/Projects/Domain/Sources/UseCase/DefaultBusStopUseCase.swift index 41a1e31e..7ce7d45f 100644 --- a/Projects/Domain/Sources/UseCase/DefaultBusStopUseCase.swift +++ b/Projects/Domain/Sources/UseCase/DefaultBusStopUseCase.swift @@ -8,28 +8,22 @@ import Foundation +import Core + import RxSwift import RxCocoa public final class DefaultBusStopUseCase: BusStopUseCase { - private let busStopArrivalInfoRepository: BusStopArrivalInfoRepository - private let favoritesRepository: FavoritesRepository - private let regularAlarmEditingService: RegularAlarmEditingService + @Injected private var busStopArrivalInfoRepository: BusStopArrivalInfoRepository + @Injected private var favoritesRepository: FavoritesRepository + @Injected private var regularAlarmEditingService: RegularAlarmEditingService public let busStopSection = PublishSubject() private var fetchThrottleStatus: FetchThrottleStatus = .completed private let disposeBag = DisposeBag() - public init( - busStopArrivalInfoRepository: BusStopArrivalInfoRepository, - favoritesRepository: FavoritesRepository, - regularAlarmEditingService: RegularAlarmEditingService - ) { - self.busStopArrivalInfoRepository = busStopArrivalInfoRepository - self.favoritesRepository = favoritesRepository - self.regularAlarmEditingService = regularAlarmEditingService - } + public init() { } public func fetchBusArrivals(request: ArrivalInfoRequest) { let busStops = busStopArrivalInfoRepository.fetchArrivalList( diff --git a/Projects/Domain/Sources/UseCase/DefaultFavoritesUseCase.swift b/Projects/Domain/Sources/UseCase/DefaultFavoritesUseCase.swift index 10ba032a..6d2d5f14 100644 --- a/Projects/Domain/Sources/UseCase/DefaultFavoritesUseCase.swift +++ b/Projects/Domain/Sources/UseCase/DefaultFavoritesUseCase.swift @@ -8,25 +8,21 @@ import Foundation +import Core + import RxSwift import RxCocoa public final class DefaultFavoritesUseCase: FavoritesUseCase { - private let busStopArrivalInfoRepository: BusStopArrivalInfoRepository - private let favoritesRepository: FavoritesRepository + @Injected private var busStopArrivalInfoRepository: BusStopArrivalInfoRepository + @Injected private var favoritesRepository: FavoritesRepository private var fetchItemLimit = 0 public private(set) var isFinalPage = false private var cachedResponses = [BusStopArrivalInfoResponse]() private let disposeBag = DisposeBag() - public init( - busStopArrivalInfoRepository: BusStopArrivalInfoRepository, - favoritesRepository: FavoritesRepository - ) { - self.busStopArrivalInfoRepository = busStopArrivalInfoRepository - self.favoritesRepository = favoritesRepository - } + public init() { } public func fakeFetch() -> Observable<[BusStopArrivalInfoResponse]> { fetchItemLimit = 5 diff --git a/Projects/Domain/Sources/UseCase/DefaultNearMapUseCase.swift b/Projects/Domain/Sources/UseCase/DefaultNearMapUseCase.swift index 8440345d..da621d2c 100644 --- a/Projects/Domain/Sources/UseCase/DefaultNearMapUseCase.swift +++ b/Projects/Domain/Sources/UseCase/DefaultNearMapUseCase.swift @@ -9,24 +9,21 @@ import CoreLocation import Foundation +import Core + import RxSwift import RxCocoa public final class DefaultNearMapUseCase: NearMapUseCase { - private let stationListRepository: StationListRepository - private let locationService: LocationService + @Injected private var locationService: LocationService + @Injected private var stationListRepository: StationListRepository public let locationStatus = BehaviorSubject( value: .notDetermined ) private let disposeBag = DisposeBag() - public init( - stationListRepository: StationListRepository, - locationService: LocationService - ) { - self.stationListRepository = stationListRepository - self.locationService = locationService + public init() { bindLocationStatus() } diff --git a/Projects/Domain/Sources/UseCase/DefaultRegularAlarmUseCase.swift b/Projects/Domain/Sources/UseCase/DefaultRegularAlarmUseCase.swift index 3e6bc95a..4724c12a 100644 --- a/Projects/Domain/Sources/UseCase/DefaultRegularAlarmUseCase.swift +++ b/Projects/Domain/Sources/UseCase/DefaultRegularAlarmUseCase.swift @@ -8,22 +8,18 @@ import Foundation +import Core + import RxSwift public class DefaultRegularAlarmUseCase: RegularAlarmUseCase { - private let localNotificationService: LocalNotificationService - private let regularAlarmRepository: RegularAlarmRepository + @Injected private var localNotificationService: LocalNotificationService + @Injected private var regularAlarmRepository: RegularAlarmRepository public let fetchedAlarm = PublishSubject<[RegularAlarmResponse]>() private let disposeBag = DisposeBag() - public init( - localNotificationService: LocalNotificationService, - regularAlarmRepository: RegularAlarmRepository - ) { - self.localNotificationService = localNotificationService - self.regularAlarmRepository = regularAlarmRepository - } + public init() { } public func fetchAlarm() { regularAlarmRepository.currentRegularAlarm diff --git a/Projects/Domain/Sources/UseCase/DefaultSearchUseCase.swift b/Projects/Domain/Sources/UseCase/DefaultSearchUseCase.swift index 3189f98f..37f82c7c 100644 --- a/Projects/Domain/Sources/UseCase/DefaultSearchUseCase.swift +++ b/Projects/Domain/Sources/UseCase/DefaultSearchUseCase.swift @@ -9,12 +9,14 @@ import CoreLocation import Foundation +import Core + import RxSwift import RxCocoa public final class DefaultSearchUseCase: SearchUseCase { - private let stationListRepository: StationListRepository - private let locationService: LocationService + @Injected private var stationListRepository: StationListRepository + @Injected private var locationService: LocationService public var locationStatus = BehaviorSubject( value: .notDetermined @@ -26,12 +28,7 @@ public final class DefaultSearchUseCase: SearchUseCase { ) private let disposeBag = DisposeBag() - public init( - stationListRepository: StationListRepository, - locationService: LocationService - ) { - self.stationListRepository = stationListRepository - self.locationService = locationService + public init() { bindLocationStatus() bindRecentSearchList() } diff --git a/Projects/Domain/Sources/UseCase/DefaultVersionCheckUseCase.swift b/Projects/Domain/Sources/UseCase/DefaultVersionCheckUseCase.swift index edfa0b56..0f1228c2 100644 --- a/Projects/Domain/Sources/UseCase/DefaultVersionCheckUseCase.swift +++ b/Projects/Domain/Sources/UseCase/DefaultVersionCheckUseCase.swift @@ -8,19 +8,15 @@ import Foundation +import Core + import RxSwift public final class DefaultVersionCheckUseCase: VersionCheckUseCase { - private let versionCheckRepository: VersionCheckRepository - private let forceUpdateService: ForceUpdateService + @Injected private var versionCheckRepository: VersionCheckRepository + @Injected private var forceUpdateService: ForceUpdateService - public init( - versionCheckRepository: VersionCheckRepository, - forceUpdateService: ForceUpdateService - ) { - self.versionCheckRepository = versionCheckRepository - self.forceUpdateService = forceUpdateService - } + public init() { } public func fetchAppStoreURL() -> Single { if hasToFetchVersion() { diff --git a/Projects/Feature/AlarmFeature/Sources/ViewModel/AddRegularAlarmViewModel.swift b/Projects/Feature/AlarmFeature/Sources/ViewModel/AddRegularAlarmViewModel.swift index 03167cdc..ad75e1d8 100644 --- a/Projects/Feature/AlarmFeature/Sources/ViewModel/AddRegularAlarmViewModel.swift +++ b/Projects/Feature/AlarmFeature/Sources/ViewModel/AddRegularAlarmViewModel.swift @@ -16,12 +16,11 @@ import RxSwift import RxRelay final class AddRegularAlarmViewModel: ViewModel { + @Injected private var regularAlarmEditingService: RegularAlarmEditingService + @Injected private var useCase: AddRegularAlarmUseCase + private let alarmToEdit: RegularAlarmResponse? private let coordinator: AddRegularAlarmCoordinator - @Injected(RegularAlarmEditingService.self) - private var regularAlarmEditingService: RegularAlarmEditingService - @Injected(AddRegularAlarmUseCase.self) - private var useCase: AddRegularAlarmUseCase private let disposeBag = DisposeBag() diff --git a/Projects/Feature/AlarmFeature/Sources/ViewModel/RegularAlarmViewModel.swift b/Projects/Feature/AlarmFeature/Sources/ViewModel/RegularAlarmViewModel.swift index a798f6b3..1241ad3e 100644 --- a/Projects/Feature/AlarmFeature/Sources/ViewModel/RegularAlarmViewModel.swift +++ b/Projects/Feature/AlarmFeature/Sources/ViewModel/RegularAlarmViewModel.swift @@ -7,8 +7,9 @@ import FeatureDependency import RxSwift public final class RegularAlarmViewModel: ViewModel { + @Injected var useCase: RegularAlarmUseCase + private let coordinator: RegularAlarmCoordinator - @Injected(RegularAlarmUseCase.self) var useCase: RegularAlarmUseCase private let disposeBag = DisposeBag() diff --git a/Projects/Feature/BusStopFeature/Sources/ViewModel/BusStopViewModel.swift b/Projects/Feature/BusStopFeature/Sources/ViewModel/BusStopViewModel.swift index 9c0edbe0..c5882d44 100644 --- a/Projects/Feature/BusStopFeature/Sources/ViewModel/BusStopViewModel.swift +++ b/Projects/Feature/BusStopFeature/Sources/ViewModel/BusStopViewModel.swift @@ -7,9 +7,9 @@ import FeatureDependency import RxSwift public final class BusStopViewModel: ViewModel { + @Injected private var useCase: BusStopUseCase + private let coordinator: BusStopCoordinator - @Injected(BusStopUseCase.self) - private var useCase: BusStopUseCase private let disposeBag = DisposeBag() private var fetchData: ArrivalInfoRequest private let flow: FlowState diff --git a/Projects/Feature/HomeFeature/Sources/ViewModel/FavoritesViewModel.swift b/Projects/Feature/HomeFeature/Sources/ViewModel/FavoritesViewModel.swift index ff854750..ebe00f43 100644 --- a/Projects/Feature/HomeFeature/Sources/ViewModel/FavoritesViewModel.swift +++ b/Projects/Feature/HomeFeature/Sources/ViewModel/FavoritesViewModel.swift @@ -8,9 +8,9 @@ import RxSwift import RxRelay public final class FavoritesViewModel: ViewModel { - private let coordinator: HomeCoordinator - @Injected(FavoritesUseCase.self) var useCase: FavoritesUseCase + @Injected private var useCase: FavoritesUseCase + private let coordinator: HomeCoordinator private let vmFetchStatus = PublishSubject() private let fetchedResponse = PublishSubject<[BusStopArrivalInfoResponse]>() private let disposeBag = DisposeBag() diff --git a/Projects/Feature/NearMapFeature/Sources/ViewModel/NearMapViewModel.swift b/Projects/Feature/NearMapFeature/Sources/ViewModel/NearMapViewModel.swift index bff9a0dc..e2db0097 100644 --- a/Projects/Feature/NearMapFeature/Sources/ViewModel/NearMapViewModel.swift +++ b/Projects/Feature/NearMapFeature/Sources/ViewModel/NearMapViewModel.swift @@ -10,7 +10,8 @@ import RxRelay import NMapsMap public final class NearMapViewModel: LeafMarkerUpdater, ViewModel { - @Injected(NearMapUseCase.self) var useCase: NearMapUseCase + @Injected var useCase: NearMapUseCase + private let coordinator: NearMapCoordinator private(set) var viewMode: NearMapMode private let disposeBag = DisposeBag() diff --git a/Projects/Feature/SearchFeature/Sources/ViewModel/SearchViewModel.swift b/Projects/Feature/SearchFeature/Sources/ViewModel/SearchViewModel.swift index 21f25700..c7519a0c 100644 --- a/Projects/Feature/SearchFeature/Sources/ViewModel/SearchViewModel.swift +++ b/Projects/Feature/SearchFeature/Sources/ViewModel/SearchViewModel.swift @@ -8,10 +8,10 @@ import RxSwift import RxRelay public final class SearchViewModel: ViewModel { + @Injected var useCase: SearchUseCase + private let coordinator: SearchCoordinator - @Injected(SearchUseCase.self) var useCase: SearchUseCase - private let disposeBag = DisposeBag() public init(coordinator: SearchCoordinator) {