handleMethodCall method

Future handleMethodCall(
  1. MethodCall call
)

Implementation

Future<dynamic> handleMethodCall(MethodCall call) async {
  if (_initCompleter == null) {
    throw PlatformException(
        code: _unknownErrorCode,
        message: 'Purchases SDK not loaded on method call: ${call.method}',
    );
  }
  await _initCompleter?.future;
  try {
    switch (call.method) {
      case 'setupPurchases':
        return await _setupPurchases(call.arguments);
      case 'setLogLevel':
        return _setLogLevel(call.arguments);
      case 'getCustomerInfo':
        return _getCustomerInfo();
      case 'getOfferings':
        return _getOfferings();
      case 'getCurrentOfferingForPlacement':
        return _getCurrentOfferingForPlacement(call.arguments);
      case 'getAppUserID':
        return _getAppUserID();
      case 'logIn':
        return _logIn(call.arguments);
      case 'logOut':
        return _logOut();
      case 'purchasePackage':
        return _purchasePackage(call.arguments);
      case 'restorePurchases':
        return _restorePurchases();
      case 'close':
        return _close();
      case 'isAnonymous':
        return _isAnonymous();
      case 'isSandbox':
        return _isSandbox();
      case 'isConfigured':
        return _isConfigured();
      case 'checkTrialOrIntroductoryPriceEligibility':
        return _checkTrialOrIntroductoryPriceEligibility(call.arguments);
      case 'setProxyURL':
        return _setProxyURL(call.arguments);
      case 'canMakePayments':
        return Future.value(true);
      case 'isWebPurchaseRedemptionURL':
        return Future.value(false);

      case 'setAttributes':
        return _setAttributes(call.arguments);
      case 'setEmail':
        return _setEmail(call.arguments);
      case 'setPhoneNumber':
        return _setPhoneNumber(call.arguments);
      case 'setDisplayName':
        return _setDisplayName(call.arguments);
      case 'getVirtualCurrencies':
        return _getVirtualCurrencies();
      case 'invalidateVirtualCurrenciesCache':
        return _invalidateVirtualCurrenciesCache();
      case 'getCachedVirtualCurrencies':
        return _getCachedVirtualCurrencies();

      case 'syncPurchases':
      case 'collectDeviceIdentifiers':
      case 'invalidateCustomerInfoCache':
      case 'showInAppMessages':
      case 'enableAdServicesAttributionTokenCollection':
      case 'setSimulatesAskToBuyInSandbox':
      case 'setAllowSharingStoreAccount':
        // No-op on web
        return Future.value();

      case 'purchase':
      case 'purchaseProduct':
      case 'recordPurchase':
      case 'getPromotionalOffer':
      case 'purchaseDiscountedPackage':
      case 'purchaseDiscountedProduct':
      case 'purchaseSubscriptionOption':
      case 'presentCodeRedemptionSheet':
      case 'beginRefundRequestForEntitlement':
      case 'beginRefundRequestForProduct':
      case 'beginRefundRequestForActiveEntitlement':
      case 'purchasePackageWithWinBackOffer':
      case 'purchaseProductWithWinBackOffer':
      case 'getEligibleWinBackOffersForProduct':
      case 'redeemWebPurchase':
        throw UnsupportedPlatformException();

      default:
        throw UnsupportedError(
          '${call.method} not implemented on web platform.',
        );
    }
  } catch (e) {
    rethrow;
  }
}