-
Notifications
You must be signed in to change notification settings - Fork 77
Expand file tree
/
Copy pathrecipients_locator.dart
More file actions
118 lines (111 loc) · 4.96 KB
/
Copy pathrecipients_locator.dart
File metadata and controls
118 lines (111 loc) · 4.96 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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import 'package:bb_mobile/core/settings/data/settings_repository.dart';
import 'package:bb_mobile/core/storage/data/datasources/key_value_storage/key_value_storage_datasource.dart';
import 'package:bb_mobile/core/utils/constants.dart';
import 'package:bb_mobile/features/recipients/application/ports/recipients_gateway_port.dart';
import 'package:bb_mobile/features/recipients/application/usecases/add_recipient_usecase.dart';
import 'package:bb_mobile/features/recipients/application/usecases/check_sinpe_usecase.dart';
import 'package:bb_mobile/features/recipients/application/usecases/get_recipients_usecase.dart';
import 'package:bb_mobile/features/recipients/application/usecases/list_cad_billers_usecase.dart';
import 'package:bb_mobile/features/recipients/frameworks/http/authenticated_bullbitcoin_dio_factory.dart';
import 'package:bb_mobile/features/recipients/frameworks/http/bullbitcoin_api_key_provider.dart';
import 'package:bb_mobile/features/recipients/interface_adapters/gateways/bullbitcoin_api_recipients_gateway.dart';
import 'package:bb_mobile/features/recipients/interface_adapters/gateways/delegating_recipients_gateway.dart';
import 'package:bb_mobile/features/recipients/interface_adapters/presenters/bloc/recipients_bloc.dart';
import 'package:bb_mobile/features/recipients/interface_adapters/presenters/models/recipient_filters_view_model.dart';
import 'package:bb_mobile/features/recipients/interface_adapters/presenters/models/recipient_view_model.dart';
import 'package:bb_mobile/locator.dart';
import 'package:dio/dio.dart';
class RecipientsLocator {
static void setup() {
registerFrameworks();
registerDrivenInterfaceAdapters();
registerApplicationServicesAndUseCases();
registerDrivingInterfaceAdapters();
}
static void registerFrameworks() {
locator.registerLazySingleton<BullbitcoinApiKeyProvider>(
() => BullbitcoinApiKeyProvider(
secureStorage: locator<KeyValueStorageDatasource<String>>(
instanceName: LocatorInstanceNameConstants.secureStorageDatasource,
),
),
);
locator.registerLazySingleton<Dio>(
() => AuthenticatedBullBitcoinDioFactory.create(
isTestnet: false,
apiKeyProvider: locator<BullbitcoinApiKeyProvider>(),
),
instanceName: 'authenticatedBullBitcoinApiClient',
);
locator.registerLazySingleton<Dio>(
() => AuthenticatedBullBitcoinDioFactory.create(
isTestnet: true,
apiKeyProvider: locator<BullbitcoinApiKeyProvider>(),
),
instanceName: 'authenticatedBullBitcoinApiTestClient',
);
}
static void registerDrivenInterfaceAdapters() {
// Only register the DelegatingRecipientsGateway here, since it
// encapsulates both the mainnet and testnet gateways, which shouldn't be
// used directly/independently for now.
locator.registerLazySingleton<RecipientsGatewayPort>(
() => DelegatingRecipientsGateway(
bullbitcoinApiClient: BullbitcoinApiRecipientsGateway(
authenticatedApiClient: locator<Dio>(
instanceName: 'authenticatedBullBitcoinApiClient',
),
),
bullBitcoinTestnetApiClient: BullbitcoinApiRecipientsGateway(
authenticatedApiClient: locator<Dio>(
instanceName: 'authenticatedBullBitcoinApiTestClient',
),
),
),
);
}
static void registerApplicationServicesAndUseCases() {
// Register application services and use cases here
locator.registerFactory<AddRecipientUsecase>(
() => AddRecipientUsecase(
recipientsGateway: locator<RecipientsGatewayPort>(),
settingsRepository: locator<SettingsRepository>(),
),
);
locator.registerFactory<GetRecipientsUsecase>(
() => GetRecipientsUsecase(
recipientsGateway: locator<RecipientsGatewayPort>(),
settingsRepository: locator<SettingsRepository>(),
),
);
locator.registerFactory<CheckSinpeUsecase>(
() => CheckSinpeUsecase(
recipientsGateway: locator<RecipientsGatewayPort>(),
settingsRepository: locator<SettingsRepository>(),
),
);
locator.registerFactory<ListCadBillersUsecase>(
() => ListCadBillersUsecase(
recipientsGateway: locator<RecipientsGatewayPort>(),
settingsRepository: locator<SettingsRepository>(),
),
);
}
static void registerDrivingInterfaceAdapters() {
// Register presenters, controllers, etc. here
locator.registerFactoryParam<
RecipientsBloc,
AllowedRecipientFiltersViewModel?,
Future<void>? Function(RecipientViewModel recipient)?
>(
(allowedRecipientFilters, onRecipientSelected) => RecipientsBloc(
allowedRecipientFilters: allowedRecipientFilters,
onRecipientSelectedHook: onRecipientSelected,
addRecipientUsecase: locator<AddRecipientUsecase>(),
getRecipientsUsecase: locator<GetRecipientsUsecase>(),
checkSinpeUsecase: locator<CheckSinpeUsecase>(),
listCadBillersUsecase: locator<ListCadBillersUsecase>(),
),
);
}
}