48 lines
1.1 KiB
Ruby
48 lines
1.1 KiB
Ruby
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
|