parseTransferRequestURL function

TransferRequest parseTransferRequestURL(
  1. String url
)

Decodes a base-58 encoded Solana Pay transfer request url. More info on https://docs.solanapay.com/core/transfer-request/overview

Implementation

TransferRequest parseTransferRequestURL(String url) {
  Uri uri = Uri.parse(url);
  String recipient = Ed25519HDPublicKey.fromBase58(uri.path).toBase58();
  TransferRequest res = TransferRequest(recipient: recipient);
  String? amountParam = uri.queryParameters["amount"];
  if (amountParam != null) {
    double amount = double.parse(amountParam);
    if (amount.isNaN || amount.isNegative) {
      throw RangeError("amount must be a valid number");
    }
    res.amount = amount;
  }
  String? splTokenParam = uri.queryParameters['spl-token'];
  if (splTokenParam != null) {
    String splToken = Ed25519HDPublicKey.fromBase58(splTokenParam).toBase58();
    res.splToken = splToken;
  }
  List<String>? referenceParam = uri.queryParametersAll['reference'];
  if (referenceParam != null) {
    List<String> reference = referenceParam
        .map((e) => Ed25519HDPublicKey.fromBase58(e).toBase58())
        .toList();
    res.reference = reference;
  }
  res.label = uri.queryParameters['label'];
  res.message = uri.queryParameters['message'];
  res.memo = uri.queryParameters['memo'];
  return res;
}