import { InputGroup } from 'react-bootstrap' import { Input } from './form' import { useMe } from './me' import { useEffect, useState } from 'react' import { isNumber } from '@/lib/format' import Link from 'next/link' function autoWithdrawThreshold ({ me }) { return isNumber(me?.privates?.autoWithdrawThreshold) ? me?.privates?.autoWithdrawThreshold : 10000 } export function autowithdrawInitial ({ me }) { return { autoWithdrawThreshold: autoWithdrawThreshold({ me }), autoWithdrawMaxFeePercent: isNumber(me?.privates?.autoWithdrawMaxFeePercent) ? me?.privates?.autoWithdrawMaxFeePercent : 1, autoWithdrawMaxFeeTotal: isNumber(me?.privates?.autoWithdrawMaxFeeTotal) ? me?.privates?.autoWithdrawMaxFeeTotal : 1 } } export function AutowithdrawSettings () { const { me } = useMe() const threshold = autoWithdrawThreshold({ me }) const [sendThreshold, setSendThreshold] = useState(Math.max(Math.floor(threshold / 10), 1)) useEffect(() => { setSendThreshold(Math.max(Math.floor(threshold / 10), 1)) }, [autoWithdrawThreshold]) return ( <> <div className='my-4 border border-3 rounded'> <div className='p-3'> <h3 className='text-center text-muted'>desired balance</h3> <h6 className='text-center pb-3'>applies globally to all autowithdraw methods</h6> <Input label='desired balance' name='autoWithdrawThreshold' onChange={(formik, e) => { const value = e.target.value setSendThreshold(Math.max(Math.floor(value / 10), 1)) }} hint={isNumber(sendThreshold) ? `will attempt auto-withdraw when your balance exceeds ${sendThreshold * 11} sats` : undefined} append={<InputGroup.Text className='text-monospace'>sats</InputGroup.Text>} required /> <h3 className='text-center text-muted pt-3'>network fees</h3> <h6 className='text-center pb-3'> we'll use whichever setting is higher during{' '} <Link target='_blank' href='https://docs.lightning.engineering/the-lightning-network/pathfinding' rel='noreferrer' >pathfinding </Link> </h6> <Input label='max fee rate' name='autoWithdrawMaxFeePercent' hint='max fee as percent of withdrawal amount' append={<InputGroup.Text>%</InputGroup.Text>} required /> <Input label='max fee total' name='autoWithdrawMaxFeeTotal' hint='max fee for any withdrawal amount' append={<InputGroup.Text className='text-monospace'>sats</InputGroup.Text>} required /> </div> </div> </> ) }