#!/bin/bash
_temp="./download/dialog.$$"
_error="./.error.out"

echo "please wait ..."

# load raspiblitz config data (with backup from old config)
source /home/admin/raspiblitz.info
source /mnt/hdd/raspiblitz.conf
if [ ${#network} -eq 0 ]; then network=`cat .network`; fi
if [ ${#network} -eq 0 ]; then network="bitcoin"; fi
if [ ${#chain} -eq 0 ]; then
  chain=$(${network}-cli -datadir=/home/bitcoin/.${network} getblockchaininfo | jq -r '.chain')
fi

# check if user has money in lightning channels - info about close all
openChannels=$(lncli --chain=${network} --network=${chain}net listchannels 2>/dev/null | jq '.[] | length')
if [ ${#openChannels} -eq 0 ]; then
  clear
  echo "*** IMPORTANT **********************************"
  echo "It looks like LND is not responding."
  echo "Still starting up, is locked or is not running?"
  echo "Try later, try reboot or check ./XXdebugLogs.sh"
  echo "************************************************"
  echo "Press ENTER to return to main menu."
  read key
  exit 1
fi

if [ ${openChannels} -gt 0 ]; then
   whiptail --title 'Info' --yes-button='Cashout Anyway' --no-button='Go Back' --yesno 'You still have funds in open Lightning Channels.\nUse CLOSEALL first if you want to cashout all funds.\nNOTICE: Just confirmed on-chain funds can be moved' 10 56
   if [ $? -eq 1 ]; then
     exit 1
   fi
   echo "..."
fi

# check if money is waiting to get confirmed
unconfirmed=$(lncli --chain=${network} --network=${chain}net walletbalance | grep '"unconfirmed_balance"' | cut -d '"' -f4)
if [ ${unconfirmed} -gt 0 ]; then
   whiptail --title 'Info' --yes-button='Cashout Anyway' --no-button='Go Back' --yesno "Still waiting confirmation for (some of) your funds.\nNOTICE: Just confirmed on-chain funds can be moved." 8 58
   if [ $? -eq 1 ]; then
     exit 1
   fi
   echo "..."
fi

# let user enter the address
l1="Enter on-chain address to send confirmed funds to:"
dialog --title "Where to send funds?" --inputbox "\n$l1\n" 9 75 2>$_temp
if test $? -eq 0
then
   echo "ok pressed"
else
   echo "cancel pressed"
   exit 1
fi
address=$(cat $_temp | xargs)
shred $_temp
if [ ${#address} -eq 0 ]; then
  echo "FAIL - not a valid address (${address})"
  echo "Press ENTER to return to main menu."
  read key
  exit 1
fi

clear
echo "******************************"
echo "Sweep all possible Funds"
echo "******************************"

# execute command
command="lncli --chain=${network} --network=${chain}net sendcoins --sweepall --addr=${address} --conf_target=6"
echo "$command"
result=$($command 2>$_error)
error=`cat ${_error}`
echo ""
if [ ${#error} -gt 0 ]; then
    echo "FAIL: $error"
    echo ""
    echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
    echo "FAIL --> Was not able to send transaction (see error above)"
    echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
else
    echo "Result: $result"
    echo ""
    echo "********************************************************************"
fi
echo ""
echo "Press ENTER to return to main menu."
read key