require "rqrcode" class WalletController < ApplicationController before_action :require_user_signed_in before_action :authenticate_with_lndhub def index @current_section = :wallet @wallet_url = "lndhub://#{current_user.ln_login}:#{current_user.ln_password}@#{ENV['LNDHUB_PUBLIC_URL']}" qrcode = RQRCode::QRCode.new(@wallet_url) @svg = qrcode.as_svg( color: "000", shape_rendering: "crispEdges", module_size: 6, standalone: true, use_path: true, svg_attributes: { class: 'inline-block' } ) @balance = fetch_balance rescue nil end private def authenticate_with_lndhub if session["ln_auth_token"].present? @ln_auth_token = session["ln_auth_token"] else lndhub = Lndhub.new auth_token = lndhub.authenticate(current_user) session["ln_auth_token"] = auth_token @ln_auth_token = auth_token end rescue # TODO add exception tracking end def fetch_balance lndhub = Lndhub.new data = lndhub.balance @ln_auth_token data["BTC"]["AvailableBalance"] end end