Skip to content

Commit

Permalink
fixes after review
Browse files Browse the repository at this point in the history
  • Loading branch information
popenta committed Feb 19, 2024
1 parent bf426bb commit ab6f64a
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 37 deletions.
11 changes: 3 additions & 8 deletions src-network-providers/apiNetworkProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { Nonce } from "./primitives";
import { ProxyNetworkProvider } from "./proxyNetworkProvider";
import { DefinitionOfFungibleTokenOnNetwork, DefinitionOfTokenCollectionOnNetwork } from "./tokenDefinitions";
import { FungibleTokenOfAccountOnNetwork, NonFungibleTokenOfAccountOnNetwork } from "./tokens";
import { TransactionOnNetwork, prepareTransactionNextForBroadcasting } from "./transactions";
import { TransactionOnNetwork, prepareTransactionForBroadcasting } from "./transactions";
import { TransactionStatus } from "./transactionStatus";

// TODO: Find & remove duplicate code between "ProxyNetworkProvider" and "ApiNetworkProvider".
Expand Down Expand Up @@ -120,17 +120,12 @@ export class ApiNetworkProvider implements INetworkProvider {
}

async sendTransaction(tx: ITransaction | ITransactionNext): Promise<string> {
if ("toSendable" in tx){
const response = await this.doPostGeneric("transactions", tx.toSendable());
return response.txHash;
}

const transaction = prepareTransactionNextForBroadcasting(tx);
const transaction = prepareTransactionForBroadcasting(tx);
const response = await this.doPostGeneric("transactions", transaction);
return response.txHash;
}

async sendTransactions(txs: ITransaction[] | ITransactionNext[]): Promise<string[]> {
async sendTransactions(txs: (ITransaction | ITransactionNext)[]): Promise<string[]> {
return await this.backingProxyNetworkProvider.sendTransactions(txs);
}

Expand Down
1 change: 0 additions & 1 deletion src-network-providers/errors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ export class ErrNetworkProvider extends Err {
}
}


/**
* Signals a generic error in the context of querying Smart Contracts.
*/
Expand Down
2 changes: 1 addition & 1 deletion src-network-providers/interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ export interface INetworkProvider {
/**
* Broadcasts a list of already-signed transactions.
*/
sendTransactions(txs: ITransaction[]): Promise<string[]>;
sendTransactions(txs: (ITransaction | ITransactionNext)[]): Promise<string[]>;

/**
* Simulates the processing of an already-signed transaction.
Expand Down
8 changes: 4 additions & 4 deletions src-network-providers/providers.dev.net.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ describe("test network providers on devnet: Proxy and API", function () {
assert.deepEqual(proxyResponse.logs.events[0].additionalData, [TransactionEventData.fromBase64("dGVzdA==")]);
});

it.only("should send both `Transaction` and `TransactionNext`", async function () {
it("should send both `Transaction` and `TransactionNext`", async function () {
this.timeout(50000);

const transaction = {
Expand Down Expand Up @@ -345,7 +345,7 @@ describe("test network providers on devnet: Proxy and API", function () {
gasLimit: BigInt(80000),
chainID: "D",
version: 2,
signature: new Uint8Array(Buffer.from("3fa42d97b4f85442850340a11411a3cbd63885e06ff3f84c7a75d0ef59c780f7a18aa4f331cf460300bc8bd99352aea10b7c3bc17e40287337ae9f9842470205", "hex")),
signature: Buffer.from("3fa42d97b4f85442850340a11411a3cbd63885e06ff3f84c7a75d0ef59c780f7a18aa4f331cf460300bc8bd99352aea10b7c3bc17e40287337ae9f9842470205", "hex"),
senderUsername: "",
receiverUsername: "",
guardian: "",
Expand All @@ -356,8 +356,8 @@ describe("test network providers on devnet: Proxy and API", function () {
const apiLegacyTxHash = await apiProvider.sendTransaction(transaction);
const apiTxNextHash = await apiProvider.sendTransaction(transactionNext);

const proxyLegacyTxHash = await apiProvider.sendTransaction(transaction);
const proxyTxNextHash = await apiProvider.sendTransaction(transactionNext);
const proxyLegacyTxHash = await proxyProvider.sendTransaction(transaction);
const proxyTxNextHash = await proxyProvider.sendTransaction(transactionNext);

assert.equal(apiLegacyTxHash, proxyLegacyTxHash);
assert.equal(apiTxNextHash, proxyTxNextHash);
Expand Down
27 changes: 6 additions & 21 deletions src-network-providers/proxyNetworkProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { NetworkStake } from "./networkStake";
import { NetworkStatus } from "./networkStatus";
import { DefinitionOfFungibleTokenOnNetwork, DefinitionOfTokenCollectionOnNetwork } from "./tokenDefinitions";
import { FungibleTokenOfAccountOnNetwork, NonFungibleTokenOfAccountOnNetwork } from "./tokens";
import { TransactionOnNetwork, prepareTransactionNextForBroadcasting } from "./transactions";
import { TransactionOnNetwork, prepareTransactionForBroadcasting } from "./transactions";
import { TransactionStatus } from "./transactionStatus";

// TODO: Find & remove duplicate code between "ProxyNetworkProvider" and "ApiNetworkProvider".
Expand Down Expand Up @@ -123,23 +123,13 @@ export class ProxyNetworkProvider implements INetworkProvider {
}

async sendTransaction(tx: ITransaction | ITransactionNext): Promise<string> {
if ("toSendable" in tx){
const response = await this.doPostGeneric("transactions", tx.toSendable());
return response.txHash;
}

const transaction = prepareTransactionNextForBroadcasting(tx);
const response = await this.doPostGeneric("transactions", transaction);
const transaction = prepareTransactionForBroadcasting(tx);
const response = await this.doPostGeneric("transaction/send", transaction);
return response.txHash;
}

async sendTransactions(txs: ITransaction[] | ITransactionNext[]): Promise<string[]> {
let data: any[];
if ("toSendable" in txs[0]){
data = (txs as ITransaction[]).map(tx => tx.toSendable());
} else {
data = (txs as ITransactionNext[]).map(tx => prepareTransactionNextForBroadcasting(tx));
}
async sendTransactions(txs: (ITransaction | ITransactionNext)[]): Promise<string[]> {
const data = (txs).map((tx) => prepareTransactionForBroadcasting(tx));

const response = await this.doPostGeneric("transaction/send-multiple", data);
const hashes = Array(txs.length).fill(null);
Expand All @@ -152,12 +142,7 @@ export class ProxyNetworkProvider implements INetworkProvider {
}

async simulateTransaction(tx: ITransaction | ITransactionNext): Promise<any> {
if ("toSendable" in tx){
const response = await this.doPostGeneric("transaction/simulate", tx.toSendable());
return response;
}

const transaction = prepareTransactionNextForBroadcasting(tx);
const transaction = prepareTransactionForBroadcasting(tx);
const response = await this.doPostGeneric("transaction/simulate", transaction);
return response;
}
Expand Down
8 changes: 6 additions & 2 deletions src-network-providers/transactions.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
import { TransactionStatus } from "./transactionStatus";
import { ContractResults } from "./contractResults";
import { Address } from "./primitives";
import { IAddress, ITransactionNext } from "./interface";
import { IAddress, ITransaction, ITransactionNext } from "./interface";
import { TransactionLogs } from "./transactionLogs";
import { TransactionReceipt } from "./transactionReceipt";

export function prepareTransactionNextForBroadcasting(transaction: ITransactionNext): any {
export function prepareTransactionForBroadcasting(transaction: ITransaction | ITransactionNext): any {
if ("toSendable" in transaction){
return transaction.toSendable();
}

return {
nonce: Number(transaction.nonce),
value: transaction.value.toString(),
Expand Down

0 comments on commit ab6f64a

Please sign in to comment.