approve method
Future<CrossmintTransactionDetails>
approve({
- required String walletId,
- 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);
}