@@ -29,7 +29,9 @@ struct AppAssembly: Assembly {
2929 container. register ( CellFactory . self) { _ in AdamantCellFactory ( ) } . inObjectScope ( . container)
3030
3131 // MARK: Secured Store
32- container. register ( SecuredStore . self) { _ in KeychainStore ( ) } . inObjectScope ( . container)
32+ container. register ( SecuredStore . self) { _ in
33+ KeychainStore ( secureStorage: AdamantSecureStorage ( ) )
34+ } . inObjectScope ( . container)
3335
3436 // MARK: LocalAuthentication
3537 container. register ( LocalAuthentication . self) { _ in AdamantAuthentication ( ) } . inObjectScope ( . container)
@@ -43,16 +45,23 @@ struct AppAssembly: Assembly {
4345 // MARK: - Services with dependencies
4446 // MARK: DialogService
4547 container. register ( DialogService . self) { r in
46- AdamantDialogService ( vibroService: r. resolve ( VibroService . self) !)
48+ AdamantDialogService (
49+ vibroService: r. resolve ( VibroService . self) !,
50+ notificationsService: r. resolve ( NotificationsService . self) !
51+ )
4752 } . inObjectScope ( . container)
4853
4954 // MARK: Notifications
5055 container. register ( NotificationsService . self) { r in
51- AdamantNotificationsService ( securedStore: r. resolve ( SecuredStore . self) !)
56+ AdamantNotificationsService (
57+ securedStore: r. resolve ( SecuredStore . self) !,
58+ vibroService: r. resolve ( VibroService . self) !
59+ )
5260 } . initCompleted { ( r, c) in // Weak reference
5361 Task { @MainActor in
5462 guard let service = c as? AdamantNotificationsService else { return }
5563 service. accountService = r. resolve ( AccountService . self)
64+ service. chatsProvider = r. resolve ( ChatsProvider . self)
5665 }
5766 } . inObjectScope ( . container)
5867
@@ -95,15 +104,21 @@ struct AppAssembly: Assembly {
95104 container. register ( PushNotificationsTokenService . self) { r in
96105 AdamantPushNotificationsTokenService (
97106 securedStore: r. resolve ( SecuredStore . self) !,
98- apiService: r. resolve ( ApiService . self) !,
107+ apiService: r. resolve ( AdamantApiServiceProtocol . self) !,
99108 adamantCore: r. resolve ( AdamantCore . self) !,
100109 accountService: r. resolve ( AccountService . self) !
101110 )
102111 } . inObjectScope ( . container)
103112
104113 // MARK: NodesStorage
105114 container. register ( NodesStorageProtocol . self) { r in
106- NodesStorage ( securedStore: r. resolve ( SecuredStore . self) !)
115+ NodesStorage (
116+ securedStore: r. resolve ( SecuredStore . self) !,
117+ nodesMergingService: r. resolve ( NodesMergingServiceProtocol . self) !,
118+ defaultNodes: { [ provider = r. resolve ( DefaultNodesProvider . self) !] groups in
119+ provider. get ( groups)
120+ }
121+ )
107122 } . inObjectScope ( . container)
108123
109124 // MARK: NodesAdditionalParamsStorage
@@ -117,28 +132,30 @@ struct AppAssembly: Assembly {
117132 } . inObjectScope ( . container)
118133
119134 // MARK: ApiService
120- container. register ( ApiService . self) { r in
135+ container. register ( AdamantApiServiceProtocol . self) { r in
121136 AdamantApiService (
122137 healthCheckWrapper: . init(
123138 service: . init( apiCore: r. resolve ( APICoreProtocol . self) !) ,
124139 nodesStorage: r. resolve ( NodesStorageProtocol . self) !,
125140 nodesAdditionalParamsStorage: r. resolve ( NodesAdditionalParamsStorageProtocol . self) !,
126- nodeGroup: . adm
141+ isActive: true ,
142+ params: NodeGroup . adm. blockchainHealthCheckParams,
143+ connection: r. resolve ( ReachabilityMonitor . self) !. connectionPublisher
127144 ) ,
128145 adamantCore: r. resolve ( AdamantCore . self) !
129146 )
130147 } . inObjectScope ( . container)
131148
132149 // MARK: IPFSApiService
133150 container. register ( IPFSApiService . self) { r in
134- IPFSApiService (
135- healthCheckWrapper : . init(
136- service : . init ( apiCore : r. resolve ( APICoreProtocol . self) !) ,
137- nodesStorage : r. resolve ( NodesStorageProtocol . self) !,
138- nodesAdditionalParamsStorage : r . resolve ( NodesAdditionalParamsStorageProtocol . self ) ! ,
139- nodeGroup : . ipfs
140- )
141- )
151+ IPFSApiService ( healthCheckWrapper : . init (
152+ service : . init( apiCore : r . resolve ( APICoreProtocol . self ) ! ) ,
153+ nodesStorage : r. resolve ( NodesStorageProtocol . self) !,
154+ nodesAdditionalParamsStorage : r. resolve ( NodesAdditionalParamsStorageProtocol . self) !,
155+ isActive : true ,
156+ params : NodeGroup . ipfs. blockchainHealthCheckParams ,
157+ connection : r . resolve ( ReachabilityMonitor . self ) ! . connectionPublisher
158+ ) )
142159 } . inObjectScope ( . container)
143160
144161 // MARK: FilesNetworkManagerProtocol
@@ -152,7 +169,9 @@ struct AppAssembly: Assembly {
152169 service: . init( apiCore: r. resolve ( APICoreProtocol . self) !) ,
153170 nodesStorage: r. resolve ( NodesStorageProtocol . self) !,
154171 nodesAdditionalParamsStorage: r. resolve ( NodesAdditionalParamsStorageProtocol . self) !,
155- nodeGroup: . btc
172+ isActive: true ,
173+ params: NodeGroup . btc. blockchainHealthCheckParams,
174+ connection: r. resolve ( ReachabilityMonitor . self) !. connectionPublisher
156175 ) )
157176 } . inObjectScope ( . container)
158177
@@ -162,7 +181,9 @@ struct AppAssembly: Assembly {
162181 service: . init( apiCore: r. resolve ( APICoreProtocol . self) !) ,
163182 nodesStorage: r. resolve ( NodesStorageProtocol . self) !,
164183 nodesAdditionalParamsStorage: r. resolve ( NodesAdditionalParamsStorageProtocol . self) !,
165- nodeGroup: . doge
184+ isActive: true ,
185+ params: NodeGroup . doge. blockchainHealthCheckParams,
186+ connection: r. resolve ( ReachabilityMonitor . self) !. connectionPublisher
166187 ) )
167188 } . inObjectScope ( . container)
168189
@@ -172,7 +193,9 @@ struct AppAssembly: Assembly {
172193 service: . init( apiCore: r. resolve ( APICoreProtocol . self) !) ,
173194 nodesStorage: r. resolve ( NodesStorageProtocol . self) !,
174195 nodesAdditionalParamsStorage: r. resolve ( NodesAdditionalParamsStorageProtocol . self) !,
175- nodeGroup: . dash
196+ isActive: true ,
197+ params: NodeGroup . dash. blockchainHealthCheckParams,
198+ connection: r. resolve ( ReachabilityMonitor . self) !. connectionPublisher
176199 ) )
177200 } . inObjectScope ( . container)
178201
@@ -182,7 +205,9 @@ struct AppAssembly: Assembly {
182205 service: . init( ) ,
183206 nodesStorage: r. resolve ( NodesStorageProtocol . self) !,
184207 nodesAdditionalParamsStorage: r. resolve ( NodesAdditionalParamsStorageProtocol . self) !,
185- nodeGroup: . klyNode
208+ isActive: true ,
209+ params: NodeGroup . klyNode. blockchainHealthCheckParams,
210+ connection: r. resolve ( ReachabilityMonitor . self) !. connectionPublisher
186211 ) )
187212 } . inObjectScope ( . container)
188213
@@ -192,7 +217,9 @@ struct AppAssembly: Assembly {
192217 service: . init( ) ,
193218 nodesStorage: r. resolve ( NodesStorageProtocol . self) !,
194219 nodesAdditionalParamsStorage: r. resolve ( NodesAdditionalParamsStorageProtocol . self) !,
195- nodeGroup: . klyService
220+ isActive: true ,
221+ params: NodeGroup . klyService. blockchainHealthCheckParams,
222+ connection: r. resolve ( ReachabilityMonitor . self) !. connectionPublisher
196223 ) )
197224 } . inObjectScope ( . container)
198225
@@ -207,7 +234,9 @@ struct AppAssembly: Assembly {
207234 service: . init( apiCore: r. resolve ( APICoreProtocol . self) !) ,
208235 nodesStorage: r. resolve ( NodesStorageProtocol . self) !,
209236 nodesAdditionalParamsStorage: r. resolve ( NodesAdditionalParamsStorageProtocol . self) !,
210- nodeGroup: . eth
237+ isActive: true ,
238+ params: NodeGroup . eth. blockchainHealthCheckParams,
239+ connection: r. resolve ( ReachabilityMonitor . self) !. connectionPublisher
211240 ) )
212241 } . inObjectScope ( . container)
213242
@@ -222,40 +251,32 @@ struct AppAssembly: Assembly {
222251 // MARK: AccountService
223252 container. register ( AccountService . self) { r in
224253 AdamantAccountService (
225- apiService: r. resolve ( ApiService . self) !,
254+ apiService: r. resolve ( AdamantApiServiceProtocol . self) !,
226255 adamantCore: r. resolve ( AdamantCore . self) !,
227256 dialogService: r. resolve ( DialogService . self) !,
228257 securedStore: r. resolve ( SecuredStore . self) !,
229- walletServiceCompose: r. resolve ( WalletServiceCompose . self) !
258+ walletServiceCompose: r. resolve ( WalletServiceCompose . self) !,
259+ currencyInfoService: r. resolve ( InfoServiceProtocol . self) !
230260 )
231261 } . inObjectScope ( . container) . initCompleted { ( r, c) in
232262 Task { @MainActor in
233263 guard let service = c as? AdamantAccountService else { return }
234264 service. notificationsService = r. resolve ( NotificationsService . self) !
235265 service. pushNotificationsTokenService = r. resolve ( PushNotificationsTokenService . self) !
236- service. currencyInfoService = r. resolve ( CurrencyInfoService . self) !
237266 service. visibleWalletService = r. resolve ( VisibleWalletsService . self) !
238267 }
239268 }
240269
241270 // MARK: AddressBookServeice
242271 container. register ( AddressBookService . self) { r in
243272 AdamantAddressBookService (
244- apiService: r. resolve ( ApiService . self) !,
273+ apiService: r. resolve ( AdamantApiServiceProtocol . self) !,
245274 adamantCore: r. resolve ( AdamantCore . self) !,
246275 accountService: r. resolve ( AccountService . self) !,
247276 dialogService: r. resolve ( DialogService . self) !
248277 )
249278 } . inObjectScope ( . container)
250279
251- // MARK: CurrencyInfoService
252- container. register ( CurrencyInfoService . self) { r in
253- AdamantCurrencyInfoService (
254- securedStore: r. resolve ( SecuredStore . self) !,
255- walletServiceCompose: r. resolve ( WalletServiceCompose . self) !
256- )
257- } . inObjectScope ( . container)
258-
259280 // MARK: LanguageStorageProtocol
260281 container. register ( LanguageStorageProtocol . self) { _ in
261282 LanguageStorageService ( )
@@ -271,15 +292,15 @@ struct AppAssembly: Assembly {
271292 container. register ( AccountsProvider . self) { r in
272293 AdamantAccountsProvider (
273294 stack: r. resolve ( CoreDataStack . self) !,
274- apiService: r. resolve ( ApiService . self) !,
295+ apiService: r. resolve ( AdamantApiServiceProtocol . self) !,
275296 addressBookService: r. resolve ( AddressBookService . self) !
276297 )
277298 } . inObjectScope ( . container)
278299
279300 // MARK: Transfers
280301 container. register ( TransfersProvider . self) { r in
281302 AdamantTransfersProvider (
282- apiService: r. resolve ( ApiService . self) !,
303+ apiService: r. resolve ( AdamantApiServiceProtocol . self) !,
283304 stack: r. resolve ( CoreDataStack . self) !,
284305 adamantCore: r. resolve ( AdamantCore . self) !,
285306 accountService: r. resolve ( AccountService . self) !,
@@ -312,7 +333,7 @@ struct AppAssembly: Assembly {
312333 container. register ( ChatsProvider . self) { r in
313334 AdamantChatsProvider (
314335 accountService: r. resolve ( AccountService . self) !,
315- apiService: r. resolve ( ApiService . self) !,
336+ apiService: r. resolve ( AdamantApiServiceProtocol . self) !,
316337 socketService: r. resolve ( SocketService . self) !,
317338 stack: r. resolve ( CoreDataStack . self) !,
318339 adamantCore: r. resolve ( AdamantCore . self) !,
@@ -344,7 +365,7 @@ struct AppAssembly: Assembly {
344365 container. register ( RichTransactionReplyService . self) { r in
345366 AdamantRichTransactionReplyService (
346367 coreDataStack: r. resolve ( CoreDataStack . self) !,
347- apiService: r. resolve ( ApiService . self) !,
368+ apiService: r. resolve ( AdamantApiServiceProtocol . self) !,
348369 adamantCore: r. resolve ( AdamantCore . self) !,
349370 accountService: r. resolve ( AccountService . self) !,
350371 walletServiceCompose: r. resolve ( WalletServiceCompose . self) !
@@ -355,7 +376,7 @@ struct AppAssembly: Assembly {
355376 container. register ( RichTransactionReactService . self) { r in
356377 AdamantRichTransactionReactService (
357378 coreDataStack: r. resolve ( CoreDataStack . self) !,
358- apiService: r. resolve ( ApiService . self) !,
379+ apiService: r. resolve ( AdamantApiServiceProtocol . self) !,
359380 adamantCore: r. resolve ( AdamantCore . self) !,
360381 accountService: r. resolve ( AccountService . self) !
361382 )
@@ -400,5 +421,30 @@ struct AppAssembly: Assembly {
400421 }
401422 }
402423 }
424+
425+ // MARK: ApiService Compose
426+ container. register ( ApiServiceComposeProtocol . self) {
427+ ApiServiceCompose (
428+ btc: $0. resolve ( BtcApiService . self) !,
429+ eth: $0. resolve ( EthApiService . self) !,
430+ klyNode: $0. resolve ( KlyNodeApiService . self) !,
431+ klyService: $0. resolve ( KlyServiceApiService . self) !,
432+ doge: $0. resolve ( DogeApiService . self) !,
433+ dash: $0. resolve ( DashApiService . self) !,
434+ adm: $0. resolve ( AdamantApiServiceProtocol . self) !,
435+ ipfs: $0. resolve ( IPFSApiService . self) !,
436+ infoService: $0. resolve ( InfoServiceApiServiceProtocol . self) !
437+ )
438+ } . inObjectScope ( . transient)
439+
440+ // MARK: NodesMergingService
441+ container. register ( NodesMergingServiceProtocol . self) { _ in
442+ NodesMergingService ( )
443+ } . inObjectScope ( . transient)
444+
445+ // MARK: DefaultNodesProvider
446+ container. register ( DefaultNodesProvider . self) { _ in
447+ DefaultNodesProvider ( )
448+ } . inObjectScope ( . transient)
403449 }
404450}
0 commit comments