crossmintPendingSignerOperation function
CrossmintPendingSignerOperation?
crossmintPendingSignerOperation(
- CrossmintWalletSigner signer,
- String chain
Returns the pending operation blocking a signer's approval on the given
chain, or null if none. Mirrors getPendingSignerOperation in the JS SDK:
Solana/Stellar surface pending transactions via signer.raw['transaction'];
EVM chains surface pending per-chain signatures via
signer.raw['chains'][chain].
Implementation
CrossmintPendingSignerOperation? crossmintPendingSignerOperation(
CrossmintWalletSigner signer,
String chain,
) {
bool isPendingStatus(Object? status) =>
status == 'pending' || status == 'awaiting-approval';
if (crossmintIsSolanaChain(chain) || crossmintIsStellarChain(chain)) {
final Object? transaction = signer.raw['transaction'];
if (transaction is Map<Object?, Object?>) {
final Object? status = transaction['status'];
final Object? id = transaction['id'];
if (isPendingStatus(status) && id is String && id.trim().isNotEmpty) {
return CrossmintPendingSignerOperation(type: 'transaction', id: id);
}
}
return null;
}
final Object? chains = signer.raw['chains'];
if (chains is Map<Object?, Object?>) {
final Object? entry = chains[chain];
if (entry is Map<Object?, Object?>) {
final Object? status = entry['status'];
final Object? id = entry['id'];
if (isPendingStatus(status) && id is String && id.trim().isNotEmpty) {
// An `onChain` entry marks a deployImmediately registration: the
// pending operation is a transaction, not a signature request.
final String type = entry.containsKey('onChain')
? 'transaction'
: 'signature';
return CrossmintPendingSignerOperation(type: type, id: id);
}
}
}
return null;
}