Iâve modified the function slightly to run approve before running the swap but to no avail.
const swapToken = async () => {
const web3 = await Moralis.enableWeb3();
// This is the smart contract address
const swapConAdd = process.env.REACT_APP_SWAP_SMART_CON;
try {
let stableAdd; // stablecoin's contract address
const stableSym = fromToken; // stablecoin symbol
const stableDec = fromDec; // stablecoin decimal
const buyerAdd = props.wallAdd; // user wallet address
const buyerAmt = stableVal; // stablecoin value/amount
const sellerAmt = tysVal; // custom token value/amount
if(stableSym.toLowerCase() === "usdt") {
stableAdd = process.env.REACT_APP_USDT_ADD;
}
// Approve user wallet for transaction
const stableAbi = await getStableCoinAbi(stableSym.toLowerCase());
const stableOpt = {
contractAddress: process.env.REACT_APP_USDT_ADD,
functionName: "approve",
abi: stableAbi,
params: {
spender: buyerAdd,
amount: Moralis.Units.Token(buyerAmt.toString(), stableDec.toString())
},
};
const approveStable = await Moralis.executeFunction(stableOpt);
// Approve tys wallet for transaction
const tysAbi = await getStableCoinAbi("xrp"); // testing with xrp
const tysOpt = {
contractAddress: process.env.REACT_APP_TYS_ADD,
functionName: "approve",
abi: tysAbi,
params: {
spender: process.env.REACT_APP_TYS_WALLET,
amount: Moralis.Units.Token(sellerAmt.toString(), "18")
},
};
const approveTys = await Moralis.executeFunction(tysOpt);
const abi = await getSwapAbi();
const swapOpt = {
contractAddress: swapConAdd,
functionName: "swap",
abi: abi,
params: {
buyerToken: stableAdd,
buyer: buyerAdd,
buyerAmt: Moralis.Units.Token(buyerAmt.toString(), stableDec.toString()),
sellerAmt: Moralis.Units.Token(sellerAmt.toString(), "18")
}
};
const swap = await Moralis.executeFunction(swapOpt);
swap.on("error", (error) => {
console.log(error);
})
} catch(error) {
console.log("transfer error", error);
}
}
Approving both erc20 tokens was a success, it was showing the right value, with the right token during Metamask confirmation & I was able to get the blockHash data & etc. back.
But when it run the executeFunction for swap, I got âexecution revertedâ error.
What am I missing here? How do I make this work?