-
Notifications
You must be signed in to change notification settings - Fork 194
/
main_production.dart
104 lines (88 loc) · 3.55 KB
/
main_production.dart
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
import 'package:ads_consent_client/ads_consent_client.dart';
import 'package:article_repository/article_repository.dart';
import 'package:deep_link_client/deep_link_client.dart';
import 'package:firebase_authentication_client/firebase_authentication_client.dart';
import 'package:firebase_notifications_client/firebase_notifications_client.dart';
import 'package:flutter_news_example/app/app.dart';
import 'package:flutter_news_example/main/bootstrap/bootstrap.dart';
import 'package:flutter_news_example/src/version.dart';
import 'package:flutter_news_example_api/client.dart';
import 'package:in_app_purchase_repository/in_app_purchase_repository.dart';
import 'package:news_repository/news_repository.dart';
import 'package:notifications_repository/notifications_repository.dart';
import 'package:package_info_client/package_info_client.dart';
import 'package:permission_client/permission_client.dart';
import 'package:persistent_storage/persistent_storage.dart';
import 'package:purchase_client/purchase_client.dart';
import 'package:token_storage/token_storage.dart';
import 'package:user_repository/user_repository.dart';
void main() {
bootstrap(
(
firebaseDynamicLinks,
firebaseMessaging,
sharedPreferences,
analyticsRepository,
) async {
final tokenStorage = InMemoryTokenStorage();
final apiClient = FlutterNewsExampleApiClient.localhost(
tokenProvider: tokenStorage.readToken,
);
const permissionClient = PermissionClient();
final persistentStorage = PersistentStorage(
sharedPreferences: sharedPreferences,
);
final packageInfoClient = PackageInfoClient(
appName: 'Flutter News Example',
packageName: 'com.flutter.news.example',
packageVersion: packageVersion,
);
final deepLinkClient = DeepLinkClient(
firebaseDynamicLinks: firebaseDynamicLinks,
);
final userStorage = UserStorage(storage: persistentStorage);
final authenticationClient = FirebaseAuthenticationClient(
tokenStorage: tokenStorage,
);
final notificationsClient = FirebaseNotificationsClient(
firebaseMessaging: firebaseMessaging,
);
final userRepository = UserRepository(
apiClient: apiClient,
authenticationClient: authenticationClient,
packageInfoClient: packageInfoClient,
deepLinkClient: deepLinkClient,
storage: userStorage,
);
final newsRepository = NewsRepository(
apiClient: apiClient,
);
final notificationsRepository = NotificationsRepository(
permissionClient: permissionClient,
storage: NotificationsStorage(storage: persistentStorage),
notificationsClient: notificationsClient,
apiClient: apiClient,
);
final articleRepository = ArticleRepository(
storage: ArticleStorage(storage: persistentStorage),
apiClient: apiClient,
);
final inAppPurchaseRepository = InAppPurchaseRepository(
authenticationClient: authenticationClient,
apiClient: apiClient,
inAppPurchase: PurchaseClient(),
);
final adsConsentClient = AdsConsentClient();
return App(
userRepository: userRepository,
newsRepository: newsRepository,
notificationsRepository: notificationsRepository,
articleRepository: articleRepository,
analyticsRepository: analyticsRepository,
inAppPurchaseRepository: inAppPurchaseRepository,
adsConsentClient: adsConsentClient,
user: await userRepository.user.first,
);
},
);
}