delete method
Future<void>
delete({
- required DocumentBase<
StripePaymentModel> payment, - Duration timeout = const Duration(seconds: 15),
Delete the created payment
.
作成したpayment
を削除します。
Implementation
Future<void> delete({
required DocumentBase<StripePaymentModel> payment,
Duration timeout = const Duration(seconds: 15),
}) 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 modelQuery = collection(userId: userId).modelQuery;
final paymentCollection = StripePaymentModelCollection(modelQuery);
final functionsAdapter =
StripePurchaseMasamuneAdapter.primary.functionsAdapter ??
FunctionsAdapter.primary;
await functionsAdapter.execute(
StripeDeletePaymentAction(
userId: userId,
paymentId: payment.uid,
),
);
await Future.doWhile(() async {
await Future.delayed(const Duration(milliseconds: 100));
await paymentCollection.reload();
return paymentCollection.any((e) => e.uid == payment.uid);
}).timeout(timeout);
_completer?.complete();
_completer = null;
notifyListeners();
} catch (e) {
_completer?.completeError(e);
_completer = null;
rethrow;
} finally {
_completer?.complete();
_completer = null;
}
}