Skip to content

Commit

Permalink
feat(sdk-coin-apt): code improvements
Browse files Browse the repository at this point in the history
TICKET: COIN-2920
  • Loading branch information
baltiyal committed Jan 28, 2025
1 parent 3c4b070 commit 6f514c9
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 32 deletions.
3 changes: 2 additions & 1 deletion modules/sdk-coin-apt/src/lib/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ export const DIGITAL_ASSET_TRANSFER_SUPPLY_PER_TRANSACTION = '1';

export const FUNGIBLE_ASSET_TRANSFER_FUNCTION = '0x1::primary_fungible_store::transfer';
export const COIN_TRANSFER_FUNCTION = '0x1::aptos_account::transfer_coins';
export const DIGITAL_ASSET_FUNCTION = '0x1::object::transfer';

export const APTOS_COIN = '0x1::aptos_coin::AptosCoin';
export const FUNGIBLE_ASSET_TYPE_ARGUMENT = '0x1::fungible_asset::Metadata';
export const DIGITAL_ASSET = '0x1::object::transfer';
export const DIGITAL_ASSET = '0x4::token::Token';
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import {
} from '@aptos-labs/ts-sdk';
import { InvalidTransactionError, TransactionRecipient, TransactionType } from '@bitgo/sdk-core';
import { BaseCoin as CoinConfig, NetworkType } from '@bitgo/statics';
import { DIGITAL_ASSET_TRANSFER_SUPPLY_PER_TRANSACTION } from '../constants';
import { DIGITAL_ASSET, DIGITAL_ASSET_FUNCTION, DIGITAL_ASSET_TRANSFER_SUPPLY_PER_TRANSACTION } from '../constants';

export class DigitalAssetTransaction extends Transaction {
constructor(coinConfig: Readonly<CoinConfig>) {
Expand All @@ -25,7 +25,11 @@ export class DigitalAssetTransaction extends Transaction {
}

protected parseTransactionPayload(payload: TransactionPayload): void {
if (!(payload instanceof TransactionPayloadEntryFunction) || payload.entryFunction.args.length !== 2) {
if (
!(payload instanceof TransactionPayloadEntryFunction) ||
payload.entryFunction.args.length !== 2 ||
DIGITAL_ASSET !== payload.entryFunction.type_args[0].toString()
) {
throw new InvalidTransactionError('Invalid transaction payload');
}
const entryFunction = payload.entryFunction;
Expand All @@ -52,8 +56,8 @@ export class DigitalAssetTransaction extends Transaction {
const simpleTxn = await aptos.transaction.build.simple({
sender: senderAddress,
data: {
function: '0x1::object::transfer',
typeArguments: ['0x4::token::Token'],
function: DIGITAL_ASSET_FUNCTION,
typeArguments: [DIGITAL_ASSET],
functionArguments: [digitalAssetAccountAddress, recipientAddress],
abi: transferDigitalAssetAbi,
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { TransactionBuilder } from './transactionBuilder';
import { BaseCoin as CoinConfig } from '@bitgo/statics';
import { TransactionType } from '@bitgo/sdk-core';
import { Transaction } from '../transaction/transaction';
import utils from '../utils';
import { TransactionPayload, TransactionPayloadEntryFunction } from '@aptos-labs/ts-sdk';
import { DigitalAssetTransaction } from '../transaction/digitalAssetTransaction';
import { DIGITAL_ASSET } from '../constants';

export class DigitalAssetTransactionBuilder extends TransactionBuilder {
constructor(_coinConfig: Readonly<CoinConfig>) {
Expand All @@ -22,11 +22,6 @@ export class DigitalAssetTransactionBuilder extends TransactionBuilder {
return this;
}

/** @inheritdoc */
initBuilder(tx: DigitalAssetTransaction): void {
this._transaction = tx;
}

/** @inheritdoc */
validateTransaction(transaction?: DigitalAssetTransaction): void {
if (!transaction) {
Expand All @@ -39,7 +34,11 @@ export class DigitalAssetTransactionBuilder extends TransactionBuilder {

protected isValidTransactionPayload(payload: TransactionPayload) {
try {
if (!(payload instanceof TransactionPayloadEntryFunction) || payload.entryFunction.args.length !== 2) {
if (
!(payload instanceof TransactionPayloadEntryFunction) ||
payload.entryFunction.args.length !== 2 ||
DIGITAL_ASSET !== payload.entryFunction.type_args[0].toString()
) {
console.error('invalid transaction payload');
return false;
}
Expand All @@ -52,18 +51,4 @@ export class DigitalAssetTransactionBuilder extends TransactionBuilder {
return false;
}
}

/** @inheritdoc */
protected fromImplementation(rawTransaction: string): Transaction {
this.transaction.fromRawTransaction(rawTransaction);
this.transaction.transactionType = this.transactionType;
return this.transaction;
}

/** @inheritdoc */
protected async buildImplementation(): Promise<Transaction> {
this.transaction.transactionType = this.transactionType;
await this.transaction.build();
return this.transaction;
}
}
12 changes: 6 additions & 6 deletions modules/sdk-coin-apt/src/lib/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ import {
APT_BLOCK_ID_LENGTH,
APT_SIGNATURE_LENGTH,
APT_TRANSACTION_ID_LENGTH,
APTOS_COIN,
DIGITAL_ASSET,
FUNGIBLE_ASSET,
APTOS_COIN_FUNCTION,
DIGITAL_ASSET_FUNCTION,
FUNGIBLE_ASSET_FUNCTION,
} from './constants';
import BigNumber from 'bignumber.js';

Expand Down Expand Up @@ -78,11 +78,11 @@ export class Utils implements BaseUtils {
const functionIdentifier = entryFunction.function_name.identifier;
const uniqueIdentifier = `${moduleAddress}::${moduleIdentifier}::${functionIdentifier}`;
switch (uniqueIdentifier) {
case APTOS_COIN:
case APTOS_COIN_FUNCTION:

Check warning

Code scanning / CodeQL

Comparison between inconvertible types Warning

Variable 'APTOS_COIN_FUNCTION' is of type undefined, but it is compared to
variable 'uniqueIdentifier'
of type string.
return TransactionType.Send;
case FUNGIBLE_ASSET:
case FUNGIBLE_ASSET_FUNCTION:

Check warning

Code scanning / CodeQL

Comparison between inconvertible types Warning

Variable 'FUNGIBLE_ASSET_FUNCTION' is of type undefined, but it is compared to
variable 'uniqueIdentifier'
of type string.
return TransactionType.SendToken;
case DIGITAL_ASSET:
case DIGITAL_ASSET_FUNCTION:
return TransactionType.SendNFT;
default:
throw new InvalidTransactionError(`Invalid transaction: unable to fetch transaction type ${moduleIdentifier}`);
Expand Down

0 comments on commit 6f514c9

Please sign in to comment.