getCredentialNFTFromLocator function

Future<CrossmintCredentialNftLookupResult> getCredentialNFTFromLocator(
  1. String locator, {
  2. CrossmintCredentialCollectionProvider? collectionProvider,
  3. Future<Object?> metadataLoader(
    1. CrossmintCredentialLocator locator
    )?,
})

Implementation

Future<CrossmintCredentialNftLookupResult> getCredentialNFTFromLocator(
  String locator, {
  CrossmintCredentialCollectionProvider? collectionProvider,
  Future<Object?> Function(CrossmintCredentialLocator locator)? metadataLoader,
}) async {
  final CrossmintCredentialLocator parsed = parseCredentialLocator(locator);
  final Object? metadata = metadataLoader == null
      ? null
      : await metadataLoader(parsed);
  final CrossmintJsonMap raw = <String, Object?>{...parsed.toJson()};
  if (metadata != null) {
    raw['metadata'] = metadata;
  }
  final CrossmintVcNft nft = CrossmintVcNft(
    chain: parsed.chain,
    contractAddress: parsed.contractAddress,
    tokenId: parsed.tokenId ?? '',
    metadata: metadata,
    raw: raw,
  );
  final CrossmintCredentialsCollection? collection = collectionProvider == null
      ? null
      : await collectionProvider(parsed.chain, parsed.contractAddress);
  return CrossmintCredentialNftLookupResult(nft: nft, collection: collection);
}