diff --git a/lib/application/donations/donations_bloc.dart b/lib/application/donations/donations_bloc.dart index e139d8bf7..261d58104 100644 --- a/lib/application/donations/donations_bloc.dart +++ b/lib/application/donations/donations_bloc.dart @@ -22,6 +22,8 @@ class DonationsBloc extends Bloc { @override Stream mapEventToState(DonationsEvent event) async* { + yield const DonationsState.loading(); + if (!await _networkService.isInternetAvailable()) { yield const DonationsState.initial(packages: [], isInitialized: false, noInternetConnection: true, canMakePurchases: false); return; @@ -32,12 +34,21 @@ class DonationsBloc extends Bloc { return; } + final canMakePurchases = await _purchaseService.canMakePurchases(); + if (!canMakePurchases) { + yield DonationsState.initial( + packages: [], + isInitialized: _purchaseService.isInitialized, + noInternetConnection: false, + canMakePurchases: false, + ); + return; + } + if (!_purchaseService.isInitialized) { await _purchaseService.init(); } - yield const DonationsState.loading(); - final s = await event.map( init: (_) => _init(), restorePurchases: (e) => _restorePurchases(e.userId), @@ -63,21 +74,12 @@ class DonationsBloc extends Bloc { } Future _init() async { - final canMakePurchases = await _purchaseService.canMakePurchases(); - if (!canMakePurchases) { - return DonationsState.initial( - packages: [], - isInitialized: _purchaseService.isInitialized, - noInternetConnection: false, - canMakePurchases: false, - ); - } final packages = await _purchaseService.getInAppPurchases(); return DonationsState.initial( packages: packages, isInitialized: _purchaseService.isInitialized, noInternetConnection: false, - canMakePurchases: canMakePurchases, + canMakePurchases: true, ); } diff --git a/lib/domain/models/donations/package_item_model.dart b/lib/domain/models/donations/package_item_model.dart index 825060a11..ca880fe6b 100644 --- a/lib/domain/models/donations/package_item_model.dart +++ b/lib/domain/models/donations/package_item_model.dart @@ -1,13 +1,13 @@ -class PackageItemModel { - final String identifier; - final String offeringIdentifier; - final String productIdentifier; - final String priceString; +import 'package:freezed_annotation/freezed_annotation.dart'; - PackageItemModel({ - required this.identifier, - required this.offeringIdentifier, - required this.productIdentifier, - required this.priceString, - }); +part 'package_item_model.freezed.dart'; + +@freezed +class PackageItemModel with _$PackageItemModel { + const factory PackageItemModel({ + required String identifier, + required String offeringIdentifier, + required String productIdentifier, + required String priceString, + }) = _PackageItemModel; }