fromTransactionEnvelopeXdrBase64 method
- String transactionEnvelopeXdrBase64
returns returns txrep by by parsing a base64 encoded transaction envelope xdr transactionEnvelopeXdrBase64
.
Implementation
static String fromTransactionEnvelopeXdrBase64(
String transactionEnvelopeXdrBase64) {
if (transactionEnvelopeXdrBase64 == null) {
throw Exception('transactionEnvelopeXdrBase64 can not be null');
}
XdrTransactionEnvelope envelopeXdr =
XdrTransactionEnvelope.fromEnvelopeXdrString(
transactionEnvelopeXdrBase64);
Transaction tx;
FeeBumpTransaction feeBump;
List<XdrDecoratedSignature> feeBumpSignatures;
switch (envelopeXdr.discriminant) {
case XdrEnvelopeType.ENVELOPE_TYPE_TX_V0:
tx = Transaction.fromV0EnvelopeXdr(envelopeXdr.v0);
break;
case XdrEnvelopeType.ENVELOPE_TYPE_TX:
tx = Transaction.fromV1EnvelopeXdr(envelopeXdr.v1);
break;
case XdrEnvelopeType.ENVELOPE_TYPE_TX_FEE_BUMP:
feeBump = FeeBumpTransaction.fromFeeBumpTransactionEnvelope(
envelopeXdr.feeBump);
tx = feeBump.innerTransaction;
feeBumpSignatures = envelopeXdr.feeBump.signatures;
break;
}
bool isFeeBump = feeBump != null;
List<String> lines = List<String>();
String type = isFeeBump ? 'ENVELOPE_TYPE_TX_FEE_BUMP' : 'ENVELOPE_TYPE_TX';
String prefix = isFeeBump ? 'feeBump.tx.innerTx.tx.' : 'tx.';
_addLine('type', type, lines);
if (isFeeBump) {
_addLine('feeBump.tx.feeSource', feeBump.feeAccount.accountId, lines);
_addLine('feeBump.tx.fee', feeBump.fee.toString(), lines);
_addLine('feeBump.tx.innerTx.type', 'ENVELOPE_TYPE_TX', lines);
}
_addLine('${prefix}sourceAccount', tx.sourceAccount.accountId, lines);
_addLine('${prefix}fee', tx.fee.toString(), lines);
_addLine('${prefix}seqNum', tx.sequenceNumber.toString(), lines);
_addTimeBounds(tx.timeBounds, lines, prefix);
_addMemo(tx.memo, lines, prefix);
_addOperations(tx.operations, lines, prefix);
_addLine('${prefix}ext.v', '0', lines);
_addSignatures(
tx.signatures, lines, isFeeBump ? 'feeBump.tx.innerTx.' : "");
if (isFeeBump) {
_addLine('feeBump.tx.ext.v', '0', lines);
_addSignatures(feeBumpSignatures, lines, 'feeBump.');
}
return lines.join('\n');
}