* direct receives and send paid action * remove withdrawl->invoiceForward has many relationship * fix formatMsats implicit type expectations * ui + dropping direct payment bolt11s * squash migrations * fix bolt11 dropping and improve paid action wallet logging * remove redundant sender id * fix redirect when funding account over threshold * better logging
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 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>
 | |
|     </>
 | |
| 
 | |
|   )
 | |
| }
 |