-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathAppComponent.swift
More file actions
102 lines (87 loc) · 2.89 KB
/
AppComponent.swift
File metadata and controls
102 lines (87 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
//
// AppComponent.swift
// App
//
// Created by kimnahun on 2026-01-21.
// Copyright © 2026 NDGL-iOS. All rights reserved.
//
import Data
import Domain
import RootFeature
import RIBs
final class AppComponent: Component<EmptyDependency>, RootDependency {
private var travelTemplateRepository: TravelTemplateRepositoryInterface {
shared {
let service = makeTravelTemplateService(tokenProvider: tokenProvider)
return TravelTemplateRepository(service: service)
}
}
private var travelProgramRepository: TravelProgramRepositoryInterface {
shared {
let service = makeTravelProgramService()
return TravelProgramRepository(service: service)
}
}
private var userTravelRepository: UserTravelRepositoryInterface {
shared {
let service = makeUserTravelService(tokenProvider: tokenProvider)
return UserTravelRepository(service: service)
}
}
private var placeRepository: PlaceRepositoryInterface {
shared {
let service = makePlaceService()
let googlePlacesService = makeGooglePlacesService()
return PlaceRepository(service: service, googlePlacesService: googlePlacesService)
}
}
var weatherRepository: WeatherRepositoryInterface {
shared {
let service = makeWeatherService()
return WeatherRepository(service: service)
}
}
var homeUsecase: HomeUsecaseProtocol {
shared {
HomeUsecase(
travelTemplateRepository: travelTemplateRepository,
travelRepository: travelProgramRepository,
userTravelRepository: userTravelRepository
)
}
}
var followDetailUsecase: FollowDetailUsecaseProtocol {
shared {
FollowDetailUsecase(
travelTemplateRepository: travelTemplateRepository,
userTravelRepository: userTravelRepository,
placeRepository: placeRepository
)
}
}
var templateSearchUsecase: TemplatesSearchUsecaseProtocol {
shared {
TemplatesSearchUsecase(travelTemplateRepository: travelTemplateRepository)
}
}
var myTravelUsecase: MyTravelUsecaseProtocol {
shared {
MyTravelUsecase(
travelTemplateRepository: travelTemplateRepository,
userTravelRepository: userTravelRepository
)
}
}
var authRepository: AuthRepositoryInterface {
shared { makeAuthRepository() }
}
var tokenRepository: TokenRepositoryProtocol {
shared { TokenRepositoryFactory.make() }
}
var tokenProvider: TokenProviding {
shared { TokenRepositoryFactory.makeTokenProvider(with: tokenRepository) }
}
init() {
super.init(dependency: EmptyComponent())
}
}