import React, { ReactElement, useState, ChangeEvent } from 'react' import styles from './Remove.module.css' import { useOcean } from '@oceanprotocol/react' import Header from './Header' import { toast } from 'react-toastify' import InputElement from '../../../atoms/Input/InputElement' import Actions from './Actions' import { Logger } from '@oceanprotocol/lib' import Button from '../../../atoms/Button' import PriceUnit from '../../../atoms/Price/PriceUnit' import { Balance } from '.' export default function Remove({ setShowRemove, poolAddress, totalPoolTokens, userLiquidity, dtSymbol }: { setShowRemove: (show: boolean) => void poolAddress: string totalPoolTokens: string userLiquidity: Balance dtSymbol: string }): ReactElement { const { ocean, accountId } = useOcean() const [amountOcean, setAmountOcean] = useState('') const [amountDatatoken, setAmountDatatoken] = useState('') const [isLoading, setIsLoading] = useState() const [txId, setTxId] = useState('') async function handleRemoveLiquidity() { setIsLoading(true) // TODO: can remove OCEAN & DT in one transaction? // exitswapExternAmountOut? exitswapPoolAmountIn? // TODO: when user hits 'use max', use pool.exitPool() try { const result = await ocean.pool.removeOceanLiquidity( accountId, poolAddress, amountOcean, totalPoolTokens ) setTxId(result.transactionHash) } catch (error) { Logger.error(error.message) toast.error(error.message) } finally { setIsLoading(false) } } // TODO: enforce correct weight rules function handleOceanAmountChange(e: ChangeEvent) { setAmountOcean(e.target.value) setAmountDatatoken(`${Number(e.target.value) * 9}`) } function handleMaxOcean() { setAmountOcean(`${userLiquidity.ocean}`) setAmountDatatoken(`${userLiquidity.ocean * 9}`) } function handleMaxDatatoken() { setAmountDatatoken(`${userLiquidity.datatoken}`) setAmountOcean(`${userLiquidity.ocean / 9}`) } function handleDatatokenAmountChange(e: ChangeEvent) { setAmountDatatoken(e.target.value) setAmountOcean(`${Number(e.target.value) / 9}`) } return (
setShowRemove(false)} />
Your pool liquidity:
{userLiquidity.ocean > Number(amountOcean) && ( )}
Your pool liquidity:
{userLiquidity.datatoken > Number(amountDatatoken) && ( )}

You will receive

) }