approve method

  1. @override
Future<CrossmintTransactionDetails> approve({
  1. required String walletId,
  2. required CrossmintWalletApproveRequest request,
})
override

Implementation

@override
Future<CrossmintTransactionDetails> approve({
  required String walletId,
  required CrossmintWalletApproveRequest request,
}) async {
  final String? transactionId = request.normalizedTransactionId;
  final String? signatureId = request.normalizedSignatureId;
  if ((transactionId != null) == (signatureId != null)) {
    throw const CrossmintConfigurationException(
      'CrossmintWalletsClient.approve(...) requires exactly one transactionId.',
    );
  }
  if (signatureId != null) {
    throw const CrossmintConfigurationException(
      'CrossmintWalletsClient.approve(...) only supports transaction approvals. Use approveSignature(...) for signature approvals.',
    );
  }
  final String resolvedTransactionId = transactionId!;
  final CrossmintJsonMap body = Map<String, Object?>.from(request.raw);
  if (request.approvals.isNotEmpty && body['approvals'] == null) {
    body['approvals'] = crossmintWalletJsonValue(request.approvals);
  }
  final CrossmintJsonMap response = await _service.approveTransaction(
    walletId,
    resolvedTransactionId,
    crossmintWalletJsonValue(body)! as CrossmintJsonMap,
  );
  return WalletResponseParser.transactionFromMap(response);
}