Skip to content

Commit 127d9da

Browse files
committed
Removed InnerTransaction
Added isEmbedded argument back to TransactionMapping Fixed catbuffer lib version using the one that includes the src and dist folders for easy debugging.
1 parent aa66743 commit 127d9da

File tree

12 files changed

+72
-71
lines changed

12 files changed

+72
-71
lines changed

package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
},
5959
"dependencies": {
6060
"bluebird": "^3.5.5",
61-
"catbuffer": "0.0.6-SNAPSHOT",
61+
"catbuffer": "0.0.7",
6262
"crypto-js": "^3.1.9-1",
6363
"js-joda": "^1.6.2",
6464
"js-sha256": "^0.9.0",

src/core/utils/TransactionMapping.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@
1515
*/
1616

1717
import { CreateTransactionFromDTO } from '../../infrastructure/transaction/CreateTransactionFromDTO';
18-
import { CreateTransactionFromPayload } from '../../infrastructure/transaction/CreateTransactionFromPayload';
18+
import {
19+
CreateTransactionFromInnerPayload,
20+
CreateTransactionFromPayload
21+
} from '../../infrastructure/transaction/CreateTransactionFromPayload';
1922
import { Transaction } from '../../model/transaction/Transaction';
2023

2124
export class TransactionMapping {
@@ -32,9 +35,11 @@ export class TransactionMapping {
3235
/**
3336
* Create transaction class from payload binary.
3437
* @param {string} payload The transaction binary payload
35-
* @returns {Transaction} The transaction class.
38+
* @param {Boolean} isEmbedded Is embedded transaction (Default: false)
39+
* @returns Transaction The transaction class.
3640
*/
37-
public static createFromPayload(payload: string): Transaction {
38-
return CreateTransactionFromPayload(payload);
41+
public static createFromPayload(payload: string,
42+
isEmbedded = false): Transaction {
43+
return isEmbedded ? CreateTransactionFromInnerPayload(payload) : CreateTransactionFromPayload(payload);
3944
}
4045
}

src/infrastructure/Listener.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,13 @@ import { AggregateTransaction } from '../model/transaction/AggregateTransaction'
2525
import { AggregateTransactionCosignature } from '../model/transaction/AggregateTransactionCosignature';
2626
import { CosignatureSignedTransaction } from '../model/transaction/CosignatureSignedTransaction';
2727
import { Deadline } from '../model/transaction/Deadline';
28-
import { InnerTransaction } from '../model/transaction/InnerTransaction';
2928
import { MultisigAccountModificationTransaction } from '../model/transaction/MultisigAccountModificationTransaction';
3029
import { Transaction } from '../model/transaction/Transaction';
3130
import { TransactionStatusError } from '../model/transaction/TransactionStatusError';
3231
import { TransferTransaction } from '../model/transaction/TransferTransaction';
3332
import { UInt64 } from '../model/UInt64';
3433
import { IListener } from './IListener';
35-
import {
36-
CreateTransactionFromDTO,
37-
extractBeneficiary,
38-
} from './transaction/CreateTransactionFromDTO';
34+
import { CreateTransactionFromDTO, extractBeneficiary, } from './transaction/CreateTransactionFromDTO';
3935

4036
enum ListenerChannelName {
4137
block = 'block',
@@ -370,7 +366,7 @@ export class Listener implements IListener {
370366
transactionFromAddress = true;
371367
}
372368
});
373-
transaction.innerTransactions.map((innerTransaction: InnerTransaction) => {
369+
transaction.innerTransactions.map((innerTransaction: Transaction) => {
374370
if (this.transactionHasSignerOrReceptor(innerTransaction, address) ||
375371
this.accountAddedToMultiSig(innerTransaction, address)) {
376372
transactionFromAddress = true;

src/infrastructure/transaction/CreateTransactionFromPayload.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import {
4242
EmbeddedSecretLockTransactionBuilder,
4343
EmbeddedSecretProofTransactionBuilder,
4444
EmbeddedTransactionBuilder,
45+
EmbeddedTransactionHelper,
4546
EmbeddedTransferTransactionBuilder,
4647
HashLockTransactionBuilder,
4748
MosaicAddressRestrictionTransactionBuilder,
@@ -145,6 +146,16 @@ export const CreateTransactionFromPayload = (payload: string): Transaction => {
145146
return toBuilder();
146147
};
147148

149+
/**
150+
* @internal
151+
* @param payload - The transaction binary data from an inner transaction
152+
* @returns Transaction
153+
*/
154+
export const CreateTransactionFromInnerPayload = (payload: string): Transaction => {
155+
const builder = EmbeddedTransactionHelper.loadFromBinary(convert.hexToUint8(payload));
156+
return CreateTransactionFromEmbeddedTransactionBuilder(builder);
157+
};
158+
148159
/**
149160
* @internal
150161
* @param builder - The embedded transaction builder builder.

src/model/model.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ export * from './transaction/Deadline';
129129
export * from './transaction/PersistentDelegationRequestTransaction';
130130
export * from './transaction/HashLockTransaction';
131131
export * from './transaction/HashType';
132-
export * from './transaction/InnerTransaction';
132+
export * from './transaction/Transaction';
133133
export * from './transaction/LinkAction';
134134
export * from './transaction/LockFundsTransaction';
135135
export * from './transaction/MultisigAccountModificationTransaction';

src/model/transaction/AggregateTransaction.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ import { UInt64 } from '../UInt64';
3838
import { AggregateTransactionCosignature } from './AggregateTransactionCosignature';
3939
import { CosignatureSignedTransaction } from './CosignatureSignedTransaction';
4040
import { Deadline } from './Deadline';
41-
import { InnerTransaction } from './InnerTransaction';
4241
import { SignedTransaction } from './SignedTransaction';
4342
import { Transaction } from './Transaction';
4443
import { TransactionInfo } from './TransactionInfo';
@@ -70,7 +69,7 @@ export class AggregateTransaction extends Transaction {
7069
/**
7170
* The array of innerTransactions included in the aggregate transaction.
7271
*/
73-
public readonly innerTransactions: InnerTransaction[],
72+
public readonly innerTransactions: Transaction[],
7473
/**
7574
* The array of transaction cosigners signatures.
7675
*/
@@ -91,7 +90,7 @@ export class AggregateTransaction extends Transaction {
9190
* @returns {AggregateTransaction}
9291
*/
9392
public static createComplete(deadline: Deadline,
94-
innerTransactions: InnerTransaction[],
93+
innerTransactions: Transaction[],
9594
networkType: NetworkType,
9695
cosignatures: AggregateTransactionCosignature[],
9796
maxFee: UInt64 = new UInt64([0, 0])): AggregateTransaction {
@@ -108,14 +107,14 @@ export class AggregateTransaction extends Transaction {
108107
/**
109108
* Create an aggregate bonded transaction object
110109
* @param {Deadline} deadline
111-
* @param {InnerTransaction[]} innerTransactions
110+
* @param {Transaction[]} innerTransactions
112111
* @param {NetworkType} networkType
113112
* @param {AggregateTransactionCosignature[]} cosignatures
114113
* @param {UInt64} maxFee - (Optional) Max fee defined by the sender
115114
* @return {AggregateTransaction}
116115
*/
117116
public static createBonded(deadline: Deadline,
118-
innerTransactions: InnerTransaction[],
117+
innerTransactions: Transaction[],
119118
networkType: NetworkType,
120119
cosignatures: AggregateTransactionCosignature[] = [],
121120
maxFee: UInt64 = new UInt64([0, 0])): AggregateTransaction {
@@ -151,7 +150,7 @@ export class AggregateTransaction extends Transaction {
151150
});
152151

153152
const innerTransactions = builder.getTransactions().map((transaction) => {
154-
return CreateTransactionFromEmbeddedTransactionBuilder(transaction as EmbeddedTransactionBuilder) as InnerTransaction;
153+
return CreateTransactionFromEmbeddedTransactionBuilder(transaction as EmbeddedTransactionBuilder);
155154
});
156155

157156
return builder.getType().valueOf() === TransactionType.AGGREGATE_COMPLETE ?
@@ -173,11 +172,11 @@ export class AggregateTransaction extends Transaction {
173172

174173
/**
175174
* @description add inner transactions to current list
176-
* @param {InnerTransaction[]} transactions the transactions to be added
175+
* @param {Transaction[]} transactions the transactions to be added
177176
* @returns {AggregateTransaction}
178177
* @memberof AggregateTransaction
179178
*/
180-
public addTransactions(transactions: InnerTransaction[]): AggregateTransaction {
179+
public addTransactions(transactions: Transaction[]): AggregateTransaction {
181180
const innerTransactions = this.innerTransactions.concat(transactions);
182181
return DtoMapping.assign(this, {innerTransactions});
183182
}
@@ -298,7 +297,7 @@ export class AggregateTransaction extends Transaction {
298297
protected generateBytes(): Uint8Array {
299298
const signerBuffer = new Uint8Array(32);
300299
const signatureBuffer = new Uint8Array(64);
301-
const transactions = this.innerTransactions.map((transaction) => (transaction as Transaction).toEmbeddedTransaction());
300+
const transactions = this.innerTransactions.map((transaction) => transaction.toEmbeddedTransaction());
302301
const cosignatures = this.cosignatures.map((cosignature) => {
303302
const signerBytes = Convert.hexToUint8(cosignature.signer.publicKey);
304303
const signatureBytes = Convert.hexToUint8(cosignature.signature);

src/model/transaction/InnerTransaction.ts

Lines changed: 0 additions & 23 deletions
This file was deleted.

src/model/transaction/Transaction.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import { Statement } from '../receipt/Statement';
2626
import { UInt64 } from '../UInt64';
2727
import { AggregateTransactionInfo } from './AggregateTransactionInfo';
2828
import { Deadline } from './Deadline';
29-
import { InnerTransaction } from './InnerTransaction';
3029
import { SignedTransaction } from './SignedTransaction';
3130
import { TransactionInfo } from './TransactionInfo';
3231
import { TransactionType } from './TransactionType';
@@ -273,9 +272,9 @@ export abstract class Transaction {
273272
* Signer is optional for `AggregateComplete` transaction `ONLY`.
274273
* If no signer provided, aggregate transaction signer will be delegated on signing
275274
* @param signer - Innre transaction signer.
276-
* @returns InnerTransaction
275+
* @returns Transaction
277276
*/
278-
public toAggregate(signer: PublicAccount): InnerTransaction {
277+
public toAggregate(signer: PublicAccount): Transaction {
279278
if (this.type === TransactionType.AGGREGATE_BONDED || this.type === TransactionType.AGGREGATE_COMPLETE) {
280279
throw new Error('Inner transaction cannot be an aggregated transaction.');
281280
}

src/service/AggregateTransactionService.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ import { TransactionMapping } from '../core/utils/TransactionMapping';
2020
import { MultisigRepository } from '../infrastructure/MultisigRepository';
2121
import { MultisigAccountGraphInfo } from '../model/account/MultisigAccountGraphInfo';
2222
import { AggregateTransaction } from '../model/transaction/AggregateTransaction';
23-
import { InnerTransaction } from '../model/transaction/InnerTransaction';
2423
import { MultisigAccountModificationTransaction } from '../model/transaction/MultisigAccountModificationTransaction';
2524
import { SignedTransaction } from '../model/transaction/SignedTransaction';
25+
import { Transaction } from '../model/transaction/Transaction';
2626
import { TransactionType } from '../model/transaction/TransactionType';
2727

2828
/**
@@ -77,12 +77,12 @@ export class AggregateTransactionService {
7777
* Validate cosignatories against multisig Account(s)
7878
* @param graphInfo - multisig account graph info
7979
* @param cosignatories - array of cosignatories extracted from aggregated transaction
80-
* @param innerTransaction - the inner transaction of the aggregated transaction
80+
* @param transaction - the inner transaction of the aggregated transaction
8181
* @returns {boolean}
8282
*/
8383
private validateCosignatories(graphInfo: MultisigAccountGraphInfo,
8484
cosignatories: string[],
85-
innerTransaction: InnerTransaction): boolean {
85+
transaction: Transaction): boolean {
8686
/**
8787
* Validate cosignatories from bottom level to top
8888
*/
@@ -96,8 +96,8 @@ export class AggregateTransactionService {
9696
* Check inner transaction. If remove cosigner from multisig account,
9797
* use minRemoval instead of minApproval for cosignatories validation.
9898
*/
99-
if (innerTransaction.type === TransactionType.MODIFY_MULTISIG_ACCOUNT) {
100-
if ((innerTransaction as MultisigAccountModificationTransaction).publicKeyDeletions.length) {
99+
if (transaction.type === TransactionType.MODIFY_MULTISIG_ACCOUNT) {
100+
if ((transaction as MultisigAccountModificationTransaction).publicKeyDeletions.length) {
101101
isMultisigRemoval = true;
102102
}
103103
}

0 commit comments

Comments
 (0)