parseTransferRequestURL function
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;
}