restorePurchases method

  1. @override
Future<void> restorePurchases({
  1. bool force = true,
})
override

Implementation

@override
Future<void> restorePurchases({bool force = true}) async {
  try {
    final load = !purchaseStream.hasValue || force;
    logger.d("StoreRepository: restorePurchases: load = $load");
    if (load) {
      var retryAttempt = 0;
      await RetryStream(
              () => Future<void>.delayed(
                          Duration(milliseconds: retryAttempt * 1000))
                      .asStream()
                      .doOnData((event) {
                    logger.d(
                        "StoreRepository: restorePurchases: try = $retryAttempt");
                    retryAttempt++;
                  }).asyncMap((value) => inAppPurchase.restorePurchases()),
              5)
          .first;
    }
  } catch (error, stacktrace) {
    logger.error(
      "StoreRepository: restorePurchases: $error",
      error: error,
      stackTrace: stacktrace,
    );
  }
}