11package cloud.mindbox.mobile_sdk.di
22
33import androidx.room.Room
4- import cloud.mindbox.mobile_sdk.inapp.data.InAppGeoRepositoryImpl
5- import cloud.mindbox.mobile_sdk.inapp.data.InAppRepositoryImpl
64import cloud.mindbox.mobile_sdk.inapp.data.InAppValidatorImpl
7- import cloud.mindbox.mobile_sdk.inapp.domain.*
8- import cloud.mindbox.mobile_sdk.inapp.mapper.InAppMessageMapper
5+ import cloud.mindbox.mobile_sdk.inapp.data.managers.GeoSerializationManagerImpl
6+ import cloud.mindbox.mobile_sdk.inapp.data.managers.InAppSerializationManagerImpl
7+ import cloud.mindbox.mobile_sdk.inapp.data.managers.MobileConfigSerializationManagerImpl
8+ import cloud.mindbox.mobile_sdk.inapp.data.managers.SessionStorageManager
9+ import cloud.mindbox.mobile_sdk.inapp.data.mapper.InAppMapper
10+ import cloud.mindbox.mobile_sdk.inapp.data.repositories.InAppGeoRepositoryImpl
11+ import cloud.mindbox.mobile_sdk.inapp.data.repositories.InAppRepositoryImpl
12+ import cloud.mindbox.mobile_sdk.inapp.data.repositories.InAppSegmentationRepositoryImpl
13+ import cloud.mindbox.mobile_sdk.inapp.data.repositories.MobileConfigRepositoryImpl
14+ import cloud.mindbox.mobile_sdk.inapp.domain.InAppChoosingManagerImpl
15+ import cloud.mindbox.mobile_sdk.inapp.domain.InAppEventManagerImpl
16+ import cloud.mindbox.mobile_sdk.inapp.domain.InAppFilteringManagerImpl
17+ import cloud.mindbox.mobile_sdk.inapp.domain.InAppInteractorImpl
18+ import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.interactors.InAppInteractor
19+ import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.managers.GeoSerializationManager
20+ import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.managers.InAppChoosingManager
21+ import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.managers.InAppEventManager
22+ import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.managers.InAppFilteringManager
23+ import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.managers.InAppSerializationManager
24+ import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.managers.MobileConfigSerializationManager
25+ import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.repositories.InAppGeoRepository
26+ import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.repositories.InAppRepository
27+ import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.repositories.InAppSegmentationRepository
28+ import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.repositories.MobileConfigRepository
29+ import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.validators.InAppValidator
30+ import cloud.mindbox.mobile_sdk.inapp.presentation.InAppMessageManager
931import cloud.mindbox.mobile_sdk.inapp.presentation.InAppMessageManagerImpl
32+ import cloud.mindbox.mobile_sdk.inapp.presentation.InAppMessageViewDisplayer
1033import cloud.mindbox.mobile_sdk.inapp.presentation.InAppMessageViewDisplayerImpl
1134import cloud.mindbox.mobile_sdk.models.TreeTargetingDto
1235import cloud.mindbox.mobile_sdk.models.operation.response.PayloadDto
1336import cloud.mindbox.mobile_sdk.monitoring.MonitoringInteractorImpl
1437import cloud.mindbox.mobile_sdk.monitoring.data.checkers.LogStoringDataCheckerImpl
38+ import cloud.mindbox.mobile_sdk.monitoring.data.mappers.MonitoringMapper
1539import cloud.mindbox.mobile_sdk.monitoring.data.repositories.MonitoringRepositoryImpl
16- import cloud.mindbox.mobile_sdk.monitoring.data.rmappers.MonitoringMapper
1740import cloud.mindbox.mobile_sdk.monitoring.data.room.MonitoringDatabase
1841import cloud.mindbox.mobile_sdk.monitoring.data.validators.MonitoringValidator
1942import cloud.mindbox.mobile_sdk.monitoring.domain.interfaces.*
2043import cloud.mindbox.mobile_sdk.monitoring.domain.managers.LogRequestDataManagerImpl
2144import cloud.mindbox.mobile_sdk.monitoring.domain.managers.LogResponseDataManagerImpl
2245import cloud.mindbox.mobile_sdk.utils.RuntimeTypeAdapterFactory
2346import com.google.gson.GsonBuilder
47+ import kotlinx.coroutines.Dispatchers
2448import org.koin.android.ext.koin.androidContext
2549import org.koin.dsl.module
2650import java.io.File
@@ -35,7 +59,8 @@ internal val monitoringModule = module {
3559 monitoringMapper = get(),
3660 context = get(),
3761 gson = get(),
38- logStoringDataChecker = get()
62+ logStoringDataChecker = get(),
63+ monitoringValidator = get()
3964 )
4065 }
4166 single { MonitoringValidator () }
@@ -55,90 +80,149 @@ internal val monitoringModule = module {
5580 }
5681 single<MonitoringInteractor > {
5782 MonitoringInteractorImpl (
58- inAppRepository = get(),
83+ mobileConfigRepository = get(),
5984 monitoringRepository = get(),
6085 logResponseDataManager = get(),
6186 logRequestDataManager = get()
6287 )
6388 }
64- factory {
89+ single {
6590 Room .databaseBuilder(
6691 androidContext(),
6792 MonitoringDatabase ::class .java,
6893 monitoringDatabaseName
69- ).fallbackToDestructiveMigration().build()
94+ )
95+ .fallbackToDestructiveMigration()
96+ .addMigrations(MonitoringDatabase .MIGRATION_1_2 )
97+ .build()
7098 }
7199 single { get<MonitoringDatabase >().monitoringDao() }
72100}
73- internal val appModule = module {
101+ internal val presentationModule = module {
74102 single<InAppMessageViewDisplayer > { InAppMessageViewDisplayerImpl () }
75- factory <InAppMessageManager > {
103+ single <InAppMessageManager > {
76104 InAppMessageManagerImpl (
77105 inAppMessageViewDisplayer = get(),
78- inAppInteractorImpl = get(), monitoringRepository = get()
106+ inAppInteractorImpl = get(),
107+ defaultDispatcher = Dispatchers .IO ,
108+ monitoringRepository = get()
109+ )
110+ }
111+ }
112+
113+ internal val domainModule = module {
114+ single<InAppInteractor > {
115+ InAppInteractorImpl (
116+ mobileConfigRepository = get(),
117+ inAppRepository = get(),
118+ inAppSegmentationRepository = get(),
119+ inAppFilteringManager = get(),
120+ inAppEventManager = get(),
121+ inAppChoosingManager = get()
122+ )
123+ }
124+ single<InAppChoosingManager > {
125+ InAppChoosingManagerImpl (
126+ inAppGeoRepository = get(), inAppSegmentationRepository = get(),
127+ inAppFilteringManager =
128+ get()
79129 )
80130 }
131+ factory<InAppEventManager > {
132+ InAppEventManagerImpl ()
133+ }
134+ factory<InAppFilteringManager > {
135+ InAppFilteringManagerImpl (inAppRepository = get())
136+ }
81137}
82138internal val dataModule = module {
83- single<InAppRepository > {
84- InAppRepositoryImpl (
139+ single {
140+ SessionStorageManager ()
141+ }
142+ single<MobileConfigRepository > {
143+ MobileConfigRepositoryImpl (
85144 inAppMapper = get(),
86- gson = get(),
145+ mobileConfigSerializationManager = get(),
87146 context = androidContext(),
88147 inAppValidator = get(),
89148 monitoringValidator = get()
90149 )
91150 }
92- factory<InAppGeoRepository > {
151+ factory<MobileConfigSerializationManager > {
152+ MobileConfigSerializationManagerImpl (
153+ gson = get()
154+ )
155+ }
156+ single<InAppGeoRepository > {
93157 InAppGeoRepositoryImpl (
94158 context = androidContext(),
95- inAppMessageMapper = get(),
159+ inAppMapper = get(),
160+ geoSerializationManager = get(),
161+ sessionStorageManager = get()
162+ )
163+ }
164+ single<InAppRepository > {
165+ InAppRepositoryImpl (
166+ context = androidContext(),
167+ sessionStorageManager = get(),
168+ inAppSerializationManager = get()
169+ )
170+ }
171+ factory<GeoSerializationManager > {
172+ GeoSerializationManagerImpl (gson = get())
173+ }
174+ factory<InAppSerializationManager > {
175+ InAppSerializationManagerImpl (
96176 gson = get()
97177 )
98178 }
99- factory<InAppInteractor > {
100- InAppInteractorImpl (
101- inAppRepositoryImpl = get(),
102- inAppGeoRepositoryImpl = get()
179+ single<InAppSegmentationRepository > {
180+ InAppSegmentationRepositoryImpl (
181+ context = androidContext(),
182+ inAppMapper = get(),
183+ sessionStorageManager = get()
103184 )
104185 }
105186 single<InAppValidator > { InAppValidatorImpl () }
106- single { InAppMessageMapper () }
187+ single { InAppMapper () }
107188 single {
108189 GsonBuilder ().registerTypeAdapterFactory(
109190 RuntimeTypeAdapterFactory .of(
110191 PayloadDto ::class .java,
111- InAppRepositoryImpl .TYPE_JSON_NAME , true
192+ TreeTargetingDto .TYPE_JSON_NAME , true
112193 ).registerSubtype(
113194 PayloadDto .SimpleImage ::class .java,
114- InAppRepositoryImpl .SIMPLE_IMAGE_JSON_NAME
195+ PayloadDto . SimpleImage .SIMPLE_IMAGE_JSON_NAME
115196 )
116197 ).registerTypeAdapterFactory(
117198 RuntimeTypeAdapterFactory .of(
118199 TreeTargetingDto ::class .java,
119- InAppRepositoryImpl .TYPE_JSON_NAME ,
200+ TreeTargetingDto .TYPE_JSON_NAME ,
120201 true
121202 ).registerSubtype(
122203 TreeTargetingDto .TrueNodeDto ::class .java,
123- InAppRepositoryImpl .TRUE_JSON_NAME
204+ TreeTargetingDto . TrueNodeDto .TRUE_JSON_NAME
124205 ).registerSubtype(
125206 TreeTargetingDto .IntersectionNodeDto ::class .java,
126- InAppRepositoryImpl .AND_JSON_NAME
207+ TreeTargetingDto . IntersectionNodeDto .AND_JSON_NAME
127208 ).registerSubtype(
128209 TreeTargetingDto .UnionNodeDto ::class .java,
129- InAppRepositoryImpl .OR_JSON_NAME
210+ TreeTargetingDto . UnionNodeDto .OR_JSON_NAME
130211 ).registerSubtype(
131212 TreeTargetingDto .SegmentNodeDto ::class .java,
132- InAppRepositoryImpl .SEGMENT_JSON_NAME
213+ TreeTargetingDto . SegmentNodeDto .SEGMENT_JSON_NAME
133214 ).registerSubtype(
134215 TreeTargetingDto .CountryNodeDto ::class .java,
135- InAppRepositoryImpl .COUNTRY_JSON_NAME
216+ TreeTargetingDto . CountryNodeDto .COUNTRY_JSON_NAME
136217 ).registerSubtype(
137218 TreeTargetingDto .CityNodeDto ::class .java,
138- InAppRepositoryImpl .CITY_JSON_NAME
219+ TreeTargetingDto . CityNodeDto .CITY_JSON_NAME
139220 ).registerSubtype(
140221 TreeTargetingDto .RegionNodeDto ::class .java,
141- InAppRepositoryImpl .REGION_JSON_NAME
222+ TreeTargetingDto .RegionNodeDto .REGION_JSON_NAME
223+ ).registerSubtype(
224+ TreeTargetingDto .OperationNodeDto ::class .java,
225+ TreeTargetingDto .OperationNodeDto .API_METHOD_CALL_JSON_NAME
142226 )
143227 ).create()
144228 }
0 commit comments