fromTransactionEnvelopeXdrBase64 static method
returns returns txrep by by parsing a base64 encoded transaction envelope xdr transactionEnvelopeXdrBase64
.
Implementation
static String fromTransactionEnvelopeXdrBase64(
String transactionEnvelopeXdrBase64) {
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>.empty(growable: true);
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);
_addPreconditions(tx.preconditions!, 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');
}