setDefault method

Future<void> setDefault({
  1. required DocumentBase<StripePaymentModel> payment,
})

If multiple payment information is set, set payment to the default payment information.

複数の支払い情報が設定されている場合paymentをデフォルトの支払い情報に設定します。

Implementation

Future<void> setDefault({
  required DocumentBase<StripePaymentModel> payment,
}) async {
  if (_completer != null) {
    return _completer!.future;
  }
  _completer = Completer<void>();
  try {
    final value = payment.value;
    if (value == null) {
      throw Exception(
        "Payment information is empty. Please run [create] method.",
      );
    }
    final functionsAdapter =
        StripePurchaseMasamuneAdapter.primary.functionsAdapter ??
            FunctionsAdapter.primary;

    await functionsAdapter.execute(
      StripeSetCustomerDefaultPaymentAction(
        userId: userId,
        paymentId: value.paymentId,
      ),
    );
    _completer?.complete();
    _completer = null;
    notifyListeners();
  } catch (e) {
    _completer?.completeError(e);
    _completer = null;
    rethrow;
  } finally {
    _completer?.complete();
    _completer = null;
  }
}