@@ -29,7 +29,9 @@ struct AppAssembly: Assembly {
29
29
container. register ( CellFactory . self) { _ in AdamantCellFactory ( ) } . inObjectScope ( . container)
30
30
31
31
// 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)
33
35
34
36
// MARK: LocalAuthentication
35
37
container. register ( LocalAuthentication . self) { _ in AdamantAuthentication ( ) } . inObjectScope ( . container)
@@ -43,16 +45,23 @@ struct AppAssembly: Assembly {
43
45
// MARK: - Services with dependencies
44
46
// MARK: DialogService
45
47
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
+ )
47
52
} . inObjectScope ( . container)
48
53
49
54
// MARK: Notifications
50
55
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
+ )
52
60
} . initCompleted { ( r, c) in // Weak reference
53
61
Task { @MainActor in
54
62
guard let service = c as? AdamantNotificationsService else { return }
55
63
service. accountService = r. resolve ( AccountService . self)
64
+ service. chatsProvider = r. resolve ( ChatsProvider . self)
56
65
}
57
66
} . inObjectScope ( . container)
58
67
@@ -95,15 +104,21 @@ struct AppAssembly: Assembly {
95
104
container. register ( PushNotificationsTokenService . self) { r in
96
105
AdamantPushNotificationsTokenService (
97
106
securedStore: r. resolve ( SecuredStore . self) !,
98
- apiService: r. resolve ( ApiService . self) !,
107
+ apiService: r. resolve ( AdamantApiServiceProtocol . self) !,
99
108
adamantCore: r. resolve ( AdamantCore . self) !,
100
109
accountService: r. resolve ( AccountService . self) !
101
110
)
102
111
} . inObjectScope ( . container)
103
112
104
113
// MARK: NodesStorage
105
114
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
+ )
107
122
} . inObjectScope ( . container)
108
123
109
124
// MARK: NodesAdditionalParamsStorage
@@ -117,28 +132,30 @@ struct AppAssembly: Assembly {
117
132
} . inObjectScope ( . container)
118
133
119
134
// MARK: ApiService
120
- container. register ( ApiService . self) { r in
135
+ container. register ( AdamantApiServiceProtocol . self) { r in
121
136
AdamantApiService (
122
137
healthCheckWrapper: . init(
123
138
service: . init( apiCore: r. resolve ( APICoreProtocol . self) !) ,
124
139
nodesStorage: r. resolve ( NodesStorageProtocol . self) !,
125
140
nodesAdditionalParamsStorage: r. resolve ( NodesAdditionalParamsStorageProtocol . self) !,
126
- nodeGroup: . adm
141
+ isActive: true ,
142
+ params: NodeGroup . adm. blockchainHealthCheckParams,
143
+ connection: r. resolve ( ReachabilityMonitor . self) !. connectionPublisher
127
144
) ,
128
145
adamantCore: r. resolve ( AdamantCore . self) !
129
146
)
130
147
} . inObjectScope ( . container)
131
148
132
149
// MARK: IPFSApiService
133
150
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
+ ) )
142
159
} . inObjectScope ( . container)
143
160
144
161
// MARK: FilesNetworkManagerProtocol
@@ -152,7 +169,9 @@ struct AppAssembly: Assembly {
152
169
service: . init( apiCore: r. resolve ( APICoreProtocol . self) !) ,
153
170
nodesStorage: r. resolve ( NodesStorageProtocol . self) !,
154
171
nodesAdditionalParamsStorage: r. resolve ( NodesAdditionalParamsStorageProtocol . self) !,
155
- nodeGroup: . btc
172
+ isActive: true ,
173
+ params: NodeGroup . btc. blockchainHealthCheckParams,
174
+ connection: r. resolve ( ReachabilityMonitor . self) !. connectionPublisher
156
175
) )
157
176
} . inObjectScope ( . container)
158
177
@@ -162,7 +181,9 @@ struct AppAssembly: Assembly {
162
181
service: . init( apiCore: r. resolve ( APICoreProtocol . self) !) ,
163
182
nodesStorage: r. resolve ( NodesStorageProtocol . self) !,
164
183
nodesAdditionalParamsStorage: r. resolve ( NodesAdditionalParamsStorageProtocol . self) !,
165
- nodeGroup: . doge
184
+ isActive: true ,
185
+ params: NodeGroup . doge. blockchainHealthCheckParams,
186
+ connection: r. resolve ( ReachabilityMonitor . self) !. connectionPublisher
166
187
) )
167
188
} . inObjectScope ( . container)
168
189
@@ -172,7 +193,9 @@ struct AppAssembly: Assembly {
172
193
service: . init( apiCore: r. resolve ( APICoreProtocol . self) !) ,
173
194
nodesStorage: r. resolve ( NodesStorageProtocol . self) !,
174
195
nodesAdditionalParamsStorage: r. resolve ( NodesAdditionalParamsStorageProtocol . self) !,
175
- nodeGroup: . dash
196
+ isActive: true ,
197
+ params: NodeGroup . dash. blockchainHealthCheckParams,
198
+ connection: r. resolve ( ReachabilityMonitor . self) !. connectionPublisher
176
199
) )
177
200
} . inObjectScope ( . container)
178
201
@@ -182,7 +205,9 @@ struct AppAssembly: Assembly {
182
205
service: . init( ) ,
183
206
nodesStorage: r. resolve ( NodesStorageProtocol . self) !,
184
207
nodesAdditionalParamsStorage: r. resolve ( NodesAdditionalParamsStorageProtocol . self) !,
185
- nodeGroup: . klyNode
208
+ isActive: true ,
209
+ params: NodeGroup . klyNode. blockchainHealthCheckParams,
210
+ connection: r. resolve ( ReachabilityMonitor . self) !. connectionPublisher
186
211
) )
187
212
} . inObjectScope ( . container)
188
213
@@ -192,7 +217,9 @@ struct AppAssembly: Assembly {
192
217
service: . init( ) ,
193
218
nodesStorage: r. resolve ( NodesStorageProtocol . self) !,
194
219
nodesAdditionalParamsStorage: r. resolve ( NodesAdditionalParamsStorageProtocol . self) !,
195
- nodeGroup: . klyService
220
+ isActive: true ,
221
+ params: NodeGroup . klyService. blockchainHealthCheckParams,
222
+ connection: r. resolve ( ReachabilityMonitor . self) !. connectionPublisher
196
223
) )
197
224
} . inObjectScope ( . container)
198
225
@@ -207,7 +234,9 @@ struct AppAssembly: Assembly {
207
234
service: . init( apiCore: r. resolve ( APICoreProtocol . self) !) ,
208
235
nodesStorage: r. resolve ( NodesStorageProtocol . self) !,
209
236
nodesAdditionalParamsStorage: r. resolve ( NodesAdditionalParamsStorageProtocol . self) !,
210
- nodeGroup: . eth
237
+ isActive: true ,
238
+ params: NodeGroup . eth. blockchainHealthCheckParams,
239
+ connection: r. resolve ( ReachabilityMonitor . self) !. connectionPublisher
211
240
) )
212
241
} . inObjectScope ( . container)
213
242
@@ -222,40 +251,32 @@ struct AppAssembly: Assembly {
222
251
// MARK: AccountService
223
252
container. register ( AccountService . self) { r in
224
253
AdamantAccountService (
225
- apiService: r. resolve ( ApiService . self) !,
254
+ apiService: r. resolve ( AdamantApiServiceProtocol . self) !,
226
255
adamantCore: r. resolve ( AdamantCore . self) !,
227
256
dialogService: r. resolve ( DialogService . self) !,
228
257
securedStore: r. resolve ( SecuredStore . self) !,
229
- walletServiceCompose: r. resolve ( WalletServiceCompose . self) !
258
+ walletServiceCompose: r. resolve ( WalletServiceCompose . self) !,
259
+ currencyInfoService: r. resolve ( InfoServiceProtocol . self) !
230
260
)
231
261
} . inObjectScope ( . container) . initCompleted { ( r, c) in
232
262
Task { @MainActor in
233
263
guard let service = c as? AdamantAccountService else { return }
234
264
service. notificationsService = r. resolve ( NotificationsService . self) !
235
265
service. pushNotificationsTokenService = r. resolve ( PushNotificationsTokenService . self) !
236
- service. currencyInfoService = r. resolve ( CurrencyInfoService . self) !
237
266
service. visibleWalletService = r. resolve ( VisibleWalletsService . self) !
238
267
}
239
268
}
240
269
241
270
// MARK: AddressBookServeice
242
271
container. register ( AddressBookService . self) { r in
243
272
AdamantAddressBookService (
244
- apiService: r. resolve ( ApiService . self) !,
273
+ apiService: r. resolve ( AdamantApiServiceProtocol . self) !,
245
274
adamantCore: r. resolve ( AdamantCore . self) !,
246
275
accountService: r. resolve ( AccountService . self) !,
247
276
dialogService: r. resolve ( DialogService . self) !
248
277
)
249
278
} . inObjectScope ( . container)
250
279
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
-
259
280
// MARK: LanguageStorageProtocol
260
281
container. register ( LanguageStorageProtocol . self) { _ in
261
282
LanguageStorageService ( )
@@ -271,15 +292,15 @@ struct AppAssembly: Assembly {
271
292
container. register ( AccountsProvider . self) { r in
272
293
AdamantAccountsProvider (
273
294
stack: r. resolve ( CoreDataStack . self) !,
274
- apiService: r. resolve ( ApiService . self) !,
295
+ apiService: r. resolve ( AdamantApiServiceProtocol . self) !,
275
296
addressBookService: r. resolve ( AddressBookService . self) !
276
297
)
277
298
} . inObjectScope ( . container)
278
299
279
300
// MARK: Transfers
280
301
container. register ( TransfersProvider . self) { r in
281
302
AdamantTransfersProvider (
282
- apiService: r. resolve ( ApiService . self) !,
303
+ apiService: r. resolve ( AdamantApiServiceProtocol . self) !,
283
304
stack: r. resolve ( CoreDataStack . self) !,
284
305
adamantCore: r. resolve ( AdamantCore . self) !,
285
306
accountService: r. resolve ( AccountService . self) !,
@@ -312,7 +333,7 @@ struct AppAssembly: Assembly {
312
333
container. register ( ChatsProvider . self) { r in
313
334
AdamantChatsProvider (
314
335
accountService: r. resolve ( AccountService . self) !,
315
- apiService: r. resolve ( ApiService . self) !,
336
+ apiService: r. resolve ( AdamantApiServiceProtocol . self) !,
316
337
socketService: r. resolve ( SocketService . self) !,
317
338
stack: r. resolve ( CoreDataStack . self) !,
318
339
adamantCore: r. resolve ( AdamantCore . self) !,
@@ -344,7 +365,7 @@ struct AppAssembly: Assembly {
344
365
container. register ( RichTransactionReplyService . self) { r in
345
366
AdamantRichTransactionReplyService (
346
367
coreDataStack: r. resolve ( CoreDataStack . self) !,
347
- apiService: r. resolve ( ApiService . self) !,
368
+ apiService: r. resolve ( AdamantApiServiceProtocol . self) !,
348
369
adamantCore: r. resolve ( AdamantCore . self) !,
349
370
accountService: r. resolve ( AccountService . self) !,
350
371
walletServiceCompose: r. resolve ( WalletServiceCompose . self) !
@@ -355,7 +376,7 @@ struct AppAssembly: Assembly {
355
376
container. register ( RichTransactionReactService . self) { r in
356
377
AdamantRichTransactionReactService (
357
378
coreDataStack: r. resolve ( CoreDataStack . self) !,
358
- apiService: r. resolve ( ApiService . self) !,
379
+ apiService: r. resolve ( AdamantApiServiceProtocol . self) !,
359
380
adamantCore: r. resolve ( AdamantCore . self) !,
360
381
accountService: r. resolve ( AccountService . self) !
361
382
)
@@ -400,5 +421,30 @@ struct AppAssembly: Assembly {
400
421
}
401
422
}
402
423
}
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)
403
449
}
404
450
}
0 commit comments