The xDeposit Function
How we're allowing players to deposit tokens from any chain to their player accounts, without leaving their favorite EVM chain.
/**
* @notice Let an user deposit GLMB inside the SC linked to his mirror wallet
* @param _glmbAmount: amount of GLMB to deposit
* @param _beneficiary: address to deposit tokens to
*/
function depositFunds (uint256 _glmbAmount, address _beneficiary) public payable {
require(_glmbAmount > 0, "Amount must be greater than zero");
require(glmbAddress.balanceOf(msg.sender) >= _glmbAmount, "Not enough GLMB");
glmbAddress.transferFrom(msg.sender, address(this), _glmbAmount);
players[_beneficiary].glmbAvailable += _glmbAmount;
} try {
let internal = await gameContract.players(await addy);
let internalAddy = await internal[0];
if (
(await internalAddy) == "0x0000000000000000000000000000000000000000"
) {
alert("You need to register before deposit");
window.location.replace("https://playtge.com/register");
return;
}
} catch (err) {
console.log(err);
}
let iface = new ethers.utils.Interface(glmbABI);
let sGlmb = document.getElementById('amount').value.toString() // get the value from the input in the front-end
let glmbFund = ethers.utils.parseEther(sGlmb);
let dataGlmb = iface.encodeFunctionData("increaseAllowance", [
gameAddressv2,
glmbFund,
]);
let iface2 = new ethers.utils.Interface(gameABIV2);
let dataFunding = iface2.encodeFunctionData("depositFunds", [
glmbFund,
addy
]);
try {
let approvalTxn = await batchContract.batchAll(
[bananasAddress, gameAddressv2],
["0", "0"],
[dataGlmb, dataFunding],
[], {
gasLimit: 200000,
}
);
await approvalTxn.wait();
alert("Deposit successful!");
window.location.replace("https://playtge.com/play");
} catch (approvalErr) {
console.log(approvalErr);
}Last updated