Features
code
Claim function
const handleClaim = async () => {
const provider: any = await detectEthereumProvider()
const web3Provider = new providers.Web3Provider(provider)
const vestingInstance = new ethers.Contract(poolAddress || '', Vesting, web3Provider.getSigner())
const tx = await vestingInstance
.claimVestedTokens()
.then(() => {
toggleSuccessModal()
})
.catch((e: any) => {
console.log(e)
})
.finally(() => {
setTimeout(function () {
closeModal()
}, 3000)
})
tx?.wait().then(() => window.location.reload())
}
create new pool
const handleCreatePool = async () => {
if (!startDate || !endDate || !name) {
return
}
toggleLoadingModal()
const start = parseInt(String(startDate.getTime() / 1000))
const duration = parseInt(String((endDate.getTime() - startDate.getTime()) / 1000))
const provider: any = await detectEthereumProvider()
const web3Provider = new providers.Web3Provider(provider)
const amount = listAddStakeholders.reduce((prev, next) => prev + parseInt(next.amount), 0)
const amountList: string[] = []
const addressList: string[] = []
listAddStakeholders.forEach((item: any, index: any) => {
if (item.address && item.amount) {
addressList.push(item.address)
const amount: any = utils.parseEther(item.amount)
amountList.push(amount)
}
})
const contract = new ethers.Contract(
process.env.REACT_APP_FACTORY_CONTRACT_ADDRESS || '',
Factory,
web3Provider.getSigner()
)
const tx = await contract
.createFullPool(name, process.env.REACT_APP_TOKEN_ADDRESS, start, duration)
.then(() => {
toggleSuccessModal()
setTimeout(function () {
closeModal()
setStartDate(null)
setEndDate(null)
setName('')
}, 3000)
})
.catch((e: any) => {
console.log(e)
})
tx?.wait().then(async (res: any) => {
if (!res.events) {
return
}
const address: string = res.events[0]?.address
if (!address || !listAddStakeholders || !listAddStakeholders.length) {
return
}
const ERC20Instance = new ethers.Contract(
process.env.REACT_APP_TOKEN_ADDRESS || '',
ERC20,
web3Provider.getSigner()
)
const tx2 = await ERC20Instance.approve(address, utils.parseEther(amount.toString())).catch((e: any) => {
console.log(e)
})
const vestingInstance = new ethers.Contract(address || '', Vesting, web3Provider.getSigner())
tx2?.wait().then(async () => {
await vestingInstance.addTokenGrants(addressList, amountList).catch((e: any) => {
console.log(e)
})
})
})
}
change stakeholder function
const handleChangeStakeholder = async (prevAddr: any, newAddr: any) => { const provider: any = await detectEthereumProvider() const web3Provider = new providers.Web3Provider(provider)
const vestingInstance = new ethers.Contract(poolAddress || '', Vesting, web3Provider.getSigner())const tx = await vestingInstance .changeInvestor(prevAddr, newAddr) .then(() => { toggleSuccessModal() setTimeout(function () { closeModal() }, 3000) }) .catch((e: any) => { console.log(e) })tx?.wait().then(() => window.location.reload())
}Use & Customisation
Add new stakeholder
const handleApproval = async () => {
if (!poolAddress) {
window.localStorage.setItem('typePoolPage', typesPoolPage.CREATE_POOL)
history.push({ pathname: 'pool' })
return
}
toggleLoadingModal()
const provider: any = await detectEthereumProvider()
const web3Provider = new providers.Web3Provider(provider)
const ERC20Instance = new ethers.Contract(
process.env.REACT_APP_TOKEN_ADDRESS || '',
ERC20,
web3Provider.getSigner()
)
const tx = await ERC20Instance.approve(poolAddress, utils.parseEther(amount.toString())).catch((e: any) => {
console.log(e)
})
tx?.wait().then(() => {
setSuccessButton(true)
closeModal()
})
}
const handleAdd = async () => {
const provider: any = await detectEthereumProvider()
const web3Provider = new providers.Web3Provider(provider)
const vestingInstance = new ethers.Contract(poolAddress || '', Vesting, web3Provider.getSigner())
const tx = await vestingInstance.addTokenGrants(addressList, amountList).catch((e: any) => {
console.log(e)
})
toggleLoadingModal()
tx?.wait().then(() => {
toggleSuccessModal()
setList([])
setAmount(0)
setTimeout(() => {
closeModal()
if (!poolAddress) {
window.localStorage.setItem('typePoolPage', typesPoolPage.CREATE_POOL)
history.push({ pathname: `pool` })
}
}, 2000)
})
}
transfer ownership function
const handleTransferOwnership = async () => {
const provider: any = await detectEthereumProvider()
const web3Provider = new providers.Web3Provider(provider)
const vestingInstance = new ethers.Contract(poolAddress || '', Vesting, web3Provider.getSigner())
await vestingInstance
.changeAdmin(valueAddress)
.then(() => {
window.localStorage.setItem('typePoolPage', typesPoolPage.LIST_POOL)
history.push({ pathname: 'pool' })
})
.catch((e: any) => {
console.log(e)
})
}
add and remove the manager
const handleRemoveManager = async (itemManager: string) => {
const provider: any = await detectEthereumProvider()
const web3Provider = new providers.Web3Provider(provider)
const vestingInstance = new ethers.Contract(poolAddress || '', Vesting, web3Provider.getSigner())
vestingInstance
.revokeRole(process.env.REACT_APP_ROLE_STATIC_ADDRESS, itemManager)
.then(() => {
dispatch(setRoleForPoolAddress({ address: poolAddress, removeRole: RolePoolAddress['OPERATOR'] }))
dispatch(updateManagers({ address: poolAddress, itemManager, isRemove: true }))
setValueAddress('')
})
.catch((e: string) => console.log(e))
}
const handleAddManager = async (itemManager: string | null) => {
const provider: any = await detectEthereumProvider()
const web3Provider = new providers.Web3Provider(provider)
const vestingInstance = new ethers.Contract(poolAddress || '', Vesting, web3Provider.getSigner())
vestingInstance
.grantRole(process.env.REACT_APP_ROLE_STATIC_ADDRESS, itemManager)
.then(() => {
dispatch(setRoleForPoolAddress({ address: poolAddress, addRole: RolePoolAddress['OPERATOR'] }))
dispatch(updateManagers({ address: poolAddress, itemManager, isRemove: false }))
setValueAddress('')
})
.catch((e: string) => console.log(e))
}
Last updated