generateSignTransactionURI method

String generateSignTransactionURI(
  1. String transactionEnvelopeXdrBase64,
  2. {String? replace,
  3. String? callback,
  4. String? publicKey,
  5. String? chain,
  6. String? message,
  7. String? networkPassphrase,
  8. String? originDomain,
  9. String? signature}
)

This function is used to generate a URIScheme compliant URL to serve as a request to sign a transaction.

Implementation

String generateSignTransactionURI(String transactionEnvelopeXdrBase64,
    {String? replace,
    String? callback,
    String? publicKey,
    String? chain,
    String? message,
    String? networkPassphrase,
    String? originDomain,
    String? signature}) {
  String result = uriSchemeName + signOperation;

  final Map<String, String> queryParams = {
    xdrParameterName: Uri.encodeComponent(transactionEnvelopeXdrBase64)
  };

  if (replace != null) {
    queryParams[replaceParameterName] = Uri.encodeComponent(replace);
  }

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

  if (publicKey != null) {
    queryParams[publicKeyParameterName] = Uri.encodeComponent(publicKey);
  }

  if (chain != null) {
    queryParams[chainParameterName] = Uri.encodeComponent(chain);
  }

  if (message != null) {
    queryParams[publicKeyParameterName] = 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;
}