#!/bin/bash

# get raspiblitz config
echo "get raspiblitz config"
source /home/admin/raspiblitz.info
source /mnt/hdd/raspiblitz.conf

source <(/home/admin/config.scripts/network.aliases.sh getvars lnd $1)

# make sure lnd wallet is unlocked
/home/admin/config.scripts/lnd.unlock.sh chain-unlock ${CHAIN}

# BASIC MENU INFO
WIDTH=64
BACKTITLE="RaspiBlitz"
TITLE=" LND Lightning Options (${CHAIN}) "
MENU=""
OPTIONS=()

OPTIONS+=(FUNDING "Fund your LND Wallet")
OPTIONS+=(PEERING "Connect to a Peer")
OPTIONS+=(CHANNEL "Open a Channel with Peer")
OPTIONS+=(SEND "Pay an Invoice/PaymentRequest")
OPTIONS+=(RECEIVE "Create Invoice/PaymentRequest")
OPTIONS+=(XPUB "Show OnChain xPubs")

if [ "${chain}" = "main" ]; then
  OPTIONS+=(lnbalance "Detailed Wallet Balances")
  OPTIONS+=(lnchannels "Lightning Channel List")
  OPTIONS+=(lnfwdreport "Lightning Forwarding Events Report")
fi

OPTIONS+=(NAME "Change Name/Alias of Node")

openChannels=$($lncli_alias listchannels 2>/dev/null | jq '.[] | length')
if [ ${#openChannels} -gt 0 ] && [ ${openChannels} -gt 0 ]; then
  OPTIONS+=(SUEZ "Visualize channels")
  OPTIONS+=(CLOSEALL "Close all open Channels on $CHAIN")
fi

OPTIONS+=(CASHOUT "Withdraw all funds from LND on $CHAIN")

if [ "${lightning}" != "lnd" ]; then
  OPTIONS+=(SWITCHLN  "Use LND as default")
fi  

CHOICE_HEIGHT=$(("${#OPTIONS[@]}/2+1"))
HEIGHT=$((CHOICE_HEIGHT+6))
CHOICE=$(dialog --clear \
                --backtitle "$BACKTITLE" \
                --title "$TITLE" \
                --ok-label "Select" \
                --cancel-label "Main menu" \
                --menu "$MENU" \
                $HEIGHT $WIDTH $CHOICE_HEIGHT \
                "${OPTIONS[@]}" \
                2>&1 >/dev/tty)

case $CHOICE in
  lnbalance)
      clear
      echo "*** YOUR SATOSHI BALANCES ***"
      /home/admin/config.scripts/lnd.balance.sh ${network}
      echo "Press ENTER to return to main menu."
      read key
      ;;
  lnchannels)
      clear
      echo "*** YOUR LIGHTNING CHANNELS ***"
      echo ""
      echo "Capacity -> total sats in the channel (their side + your side)"
      echo "Commit-Fee -> the fee that's charged if either side of the channel closes"
      echo "Balance-Local -> sats on your side of the channel (outbound liquidity)"
      echo "Balance-Remote -> sats on their side of the channel (inbound liquidity)"
      echo "Fee-Base -> fixed fee (in millisatoshis) per forwarding on channel"
      echo "Fee-PerMil -> amount based fee (millisatoshis per 1 satoshi) on forwarding"
      /home/admin/config.scripts/lnd.channels.sh ${network}
      echo "Press ENTER to return to main menu."
      read key
      ;;
  lnfwdreport)
      /home/admin/config.scripts/lnd.fwdreport.sh -menu
      echo "Press ENTER to return to main menu."
      read key
      ;;
  PEERING)
      /home/admin/BBconnectPeer.sh lnd $CHAIN
      ;;
  FUNDING)
      /home/admin/BBfundWallet.sh lnd $CHAIN
      ;;
  CASHOUT)
      /home/admin/BBcashoutWallet.sh lnd $CHAIN
      ;;
  CHANNEL)
      /home/admin/BBopenChannel.sh lnd $CHAIN
      ;;
  SEND)
      /home/admin/BBpayInvoice.sh lnd $CHAIN
      ;;
  RECEIVE)
      /home/admin/BBcreateInvoice.sh lnd $CHAIN
      ;;
  NAME)
      sudo /home/admin/config.scripts/lnd.setname.sh $CHAIN
      noreboot=$?
      if [ "${noreboot}" = "0" ]; then
        sudo -u bitcoin ${network}-cli stop
        echo "Press ENTER to Reboot."
        read key
        sudo /home/admin/config.scripts/blitz.shutdown.sh reboot
        exit 0
      fi
      ;;
  SUEZ)
      clear
      if [ ! -f /home/bitcoin/suez/suez ];then
        /home/admin/config.scripts/bonus.suez.sh on
      fi
      cd /home/bitcoin/suez || exit 1 
      sudo -u bitcoin poetry run /home/bitcoin/suez/suez \
        --client-args=-n=${CHAIN} \
        --client-args=--rpcserver=localhost:1${L2rpcportmod}009
      echo
      echo "Press ENTER to return to main menu."
      read key
      ;;
  CLOSEALL)
      /home/admin/BBcloseAllChannels.sh lnd $CHAIN
      echo "Press ENTER to return to main menu."
      read key
      ;;
  SWITCHLN)
      clear 
      echo
      # setting value in raspi blitz config
      /home/admin/config.scripts/blitz.conf.sh set lightning "lnd"
      sudo systemctl restart blitzapi 2>/dev/null
      echo "# OK - lightning=lnd is set in /mnt/hdd/raspiblitz.conf"
      echo
      echo "Press ENTER to return to main menu."
      read key
      ;;
  XPUB)
    clear
    echo "LND wallet xPubs => $lncli_alias wallet accounts list --name default"
    echo
    $lncli_alias wallet accounts list --name default | grep --color=never .*,
    echo
    echo "EXPERIMENTAL - DONT USE FOR SERIOUS FUND RECEIVING YET"
    echo "Report your experience to: https://github.com/rootzoll/raspiblitz/issues/2192"
    echo 
    echo "Press ENTER to return to main menu."
    read key

esac
