Skip to content

Commit

Permalink
fix: retry reverse extra args token (#167)
Browse files Browse the repository at this point in the history
  • Loading branch information
palace22 authored Sep 22, 2024
1 parent 5ef123e commit 1f9badb
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 4 deletions.
5 changes: 5 additions & 0 deletions .changeset/tough-emus-allow.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@folks-finance/xchain-sdk": patch
---

Fixed retry and reverse extra args token
24 changes: 20 additions & 4 deletions src/chains/evm/hub/utils/message.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ import { RECEIVE_TOKEN_ACTIONS } from "../../../../common/constants/message.js";
import { ChainType } from "../../../../common/types/chain.js";
import { MessageDirection } from "../../../../common/types/gmp.js";
import { Action } from "../../../../common/types/message.js";
import { TokenType } from "../../../../common/types/token.js";
import {
assertAdapterSupportsDataMessage,
assertAdapterSupportsTokenMessage,
} from "../../../../common/utils/adapter.js";
import { getSpokeChain, getSpokeTokenData } from "../../../../common/utils/chain.js";
import {
buildMessageToSend,
Expand Down Expand Up @@ -57,13 +62,19 @@ export async function getHubRetryMessageExtraArgsAndAdapterFees(

const spokeChain = getSpokeChain(payloadData.receiverFolksChainId, network);
const spokeTokenData = getSpokeTokenData(spokeChain, folksTokenId);
const hubSpokeChain = getSpokeChain(hubChain.folksChainId, network);
const hubSpokeTokenData = getSpokeTokenData(hubSpokeChain, folksTokenId);

if (hubSpokeTokenData.token.type === TokenType.CIRCLE)
assertAdapterSupportsTokenMessage(payloadData.receiverFolksChainId, returnAdapterId);
else assertAdapterSupportsDataMessage(payloadData.receiverFolksChainId, returnAdapterId);

const returnData: SendTokenMessageData = {
amount: payloadData.amount,
};
const returnExtraArgs: SendTokenExtraArgs = {
folksTokenId,
token: spokeTokenData.token,
token: hubSpokeTokenData.token,
recipient: spokeTokenData.spokeAddress,
amount: payloadData.amount,
};
Expand Down Expand Up @@ -116,21 +127,26 @@ export async function getHubReverseMessageExtraArgsAndAdapterFees(
}> {
const { action, data } = payload;
const payloadData = decodeMessagePayloadData(action as ReversibleHubAction, data);
const folksTokenId = getFolksTokenIdFromPool(payloadData.poolId);

const returnAdapterId = extraArgsParams?.returnAdapterId ?? message.returnAdapterId;
const accountId = extraArgsParams?.accountId ?? payload.accountId;

const folksTokenId = getFolksTokenIdFromPool(payloadData.poolId);

const spokeChain = getSpokeChain(message.sourceChainId, network);
const spokeTokenData = getSpokeTokenData(spokeChain, folksTokenId);
const hubSpokeChain = getSpokeChain(hubChain.folksChainId, network);
const hubSpokeTokenData = getSpokeTokenData(hubSpokeChain, folksTokenId);

if (hubSpokeTokenData.token.type === TokenType.CIRCLE)
assertAdapterSupportsTokenMessage(message.sourceChainId, returnAdapterId);
else assertAdapterSupportsDataMessage(message.sourceChainId, returnAdapterId);

const returnData: SendTokenMessageData = {
amount: payloadData.amount,
};
const returnExtraArgs: SendTokenExtraArgs = {
folksTokenId,
token: spokeTokenData.token,
token: hubSpokeTokenData.token,
recipient: spokeTokenData.spokeAddress,
amount: payloadData.amount,
};
Expand Down
3 changes: 3 additions & 0 deletions src/utils/random.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export function getRandomElement<T>(arr: ReadonlyArray<T>): T {
return arr[Math.floor(Math.random() * arr.length)];
}

0 comments on commit 1f9badb

Please sign in to comment.