Skip to content

Commit

Permalink
[Application] The loading state should be emitted first
Browse files Browse the repository at this point in the history
  • Loading branch information
Wolfteam committed Mar 1, 2022
1 parent a2624a4 commit 2ec8dd2
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 23 deletions.
26 changes: 14 additions & 12 deletions lib/application/donations/donations_bloc.dart
Expand Up @@ -22,6 +22,8 @@ class DonationsBloc extends Bloc<DonationsEvent, DonationsState> {

@override
Stream<DonationsState> mapEventToState(DonationsEvent event) async* {
yield const DonationsState.loading();

if (!await _networkService.isInternetAvailable()) {
yield const DonationsState.initial(packages: [], isInitialized: false, noInternetConnection: true, canMakePurchases: false);
return;
Expand All @@ -32,12 +34,21 @@ class DonationsBloc extends Bloc<DonationsEvent, DonationsState> {
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),
Expand All @@ -63,21 +74,12 @@ class DonationsBloc extends Bloc<DonationsEvent, DonationsState> {
}

Future<DonationsState> _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,
);
}

Expand Down
22 changes: 11 additions & 11 deletions 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;
}

0 comments on commit 2ec8dd2

Please sign in to comment.