generatePayOperationURI method

String generatePayOperationURI(
  1. String destinationAccountId,
  2. {String? amount,
  3. String? assetCode,
  4. String? assetIssuer,
  5. String? memo,
  6. String? memoType,
  7. String? callback,
  8. String? message,
  9. String? networkPassphrase,
  10. String? originDomain,
  11. String? signature}
)

This function is used to generate a URIScheme compliant URL to serve as a request to pay a specific address with a specific asset, regardless of the source asset used by the payer.

Implementation

String generatePayOperationURI(String destinationAccountId,
    {String? amount,
    String? assetCode,
    String? assetIssuer,
    String? memo,
    String? memoType,
    String? callback,
    String? message,
    String? networkPassphrase,
    String? originDomain,
    String? signature}) {
  String result = uriSchemeName + payOperation;

  final Map<String, String> queryParams = {
    destinationParameterName: destinationAccountId
  };

  if (amount != null) {
    queryParams[amountParameterName] = Uri.encodeComponent(amount);
  }

  if (assetCode != null) {
    queryParams[assetCodeParameterName] = Uri.encodeComponent(assetCode);
  }

  if (assetIssuer != null) {
    queryParams[assetIssuerParameterName] = Uri.encodeComponent(assetIssuer);
  }

  if (memo != null) {
    queryParams[memoCodeParameterName] = Uri.encodeComponent(memo);
  }

  if (memoType != null) {
    queryParams[memoTypeIssuerParameterName] = Uri.encodeComponent(memoType);
  }

  if (callback != null) {
    queryParams[callbackParameterName] = Uri.encodeComponent(callback);
  }

  if (message != null) {
    queryParams[messageParameterName] = Uri.encodeComponent(message);
  }

  if (networkPassphrase != null) {
    queryParams[networkPassphraseParameterName] =
        Uri.encodeComponent(networkPassphrase);
  }

  if (originDomain != null) {
    queryParams[originDomainParameterName] =
        Uri.encodeComponent(originDomain);
  }

  if (signature != null) {
    queryParams[signatureParameterName] = Uri.encodeComponent(signature);
  }

  for (MapEntry e in queryParams.entries) {
    result += "${e.key}=${e.value}&";
  }

  if (queryParams.isNotEmpty) {
    result = result.substring(0, result.length - 1);
  }

  return result;
}