refactor: remove legacy code
This commit is contained in:
parent
efb9deb028
commit
8d328c5465
5 changed files with 8 additions and 498 deletions
|
|
@ -8,7 +8,7 @@ from os import getenv
|
||||||
from werkzeug.middleware.proxy_fix import ProxyFix
|
from werkzeug.middleware.proxy_fix import ProxyFix
|
||||||
|
|
||||||
from .core import core_app, migrations as core_migrations
|
from .core import core_app, migrations as core_migrations
|
||||||
from .helpers import ExtensionManager, megajson
|
from .helpers import ExtensionManager
|
||||||
|
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
@ -58,7 +58,6 @@ for ext in valid_extensions:
|
||||||
app.jinja_env.globals["DEBUG"] = app.config["DEBUG"]
|
app.jinja_env.globals["DEBUG"] = app.config["DEBUG"]
|
||||||
app.jinja_env.globals["EXTENSIONS"] = valid_extensions
|
app.jinja_env.globals["EXTENSIONS"] = valid_extensions
|
||||||
app.jinja_env.globals["SITE_TITLE"] = getenv("LNBITS_SITE_TITLE", "LNbits")
|
app.jinja_env.globals["SITE_TITLE"] = getenv("LNBITS_SITE_TITLE", "LNbits")
|
||||||
app.jinja_env.filters["megajson"] = megajson
|
|
||||||
|
|
||||||
|
|
||||||
# assets
|
# assets
|
||||||
|
|
|
||||||
|
|
@ -223,10 +223,10 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
window.user = {{ user | megajson | safe }}
|
window.user = {{ user | tojson | safe }}
|
||||||
window.user_wallets = {{ user_wallets | megajson | safe }}
|
window.user_wallets = {{ user_wallets | tojson | safe }}
|
||||||
window.user_ext = {{ user_ext | megajson | safe }}
|
window.user_ext = {{ user_ext | tojson | safe }}
|
||||||
window.user_ev = {{ user_ev | megajson | safe }}
|
window.user_ev = {{ user_ev | tojson | safe }}
|
||||||
|
|
||||||
const user_ev = window.user_ev
|
const user_ev = window.user_ev
|
||||||
console.log(user_ev)
|
console.log(user_ev)
|
||||||
|
|
|
||||||
|
|
@ -525,8 +525,8 @@ button:focus .ema {
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
|
|
||||||
window.user_ev = {{ user_ev | megajson | safe }}
|
window.user_ev = {{ user_ev | tojson | safe }}
|
||||||
window.user_ev_sold = {{ user_ev_sold | megajson | safe }}
|
window.user_ev_sold = {{ user_ev_sold | tojson | safe }}
|
||||||
console.log(user_ev)
|
console.log(user_ev)
|
||||||
console.log(user_ev_sold)
|
console.log(user_ev_sold)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import shortuuid
|
import shortuuid
|
||||||
import sqlite3
|
|
||||||
|
|
||||||
from typing import List, NamedTuple, Optional
|
from typing import List, NamedTuple, Optional
|
||||||
|
|
||||||
|
|
@ -55,14 +54,3 @@ class Status:
|
||||||
|
|
||||||
def urlsafe_short_hash() -> str:
|
def urlsafe_short_hash() -> str:
|
||||||
return shortuuid.uuid()
|
return shortuuid.uuid()
|
||||||
|
|
||||||
|
|
||||||
class MegaEncoder(json.JSONEncoder):
|
|
||||||
def default(self, obj):
|
|
||||||
if isinstance(obj, sqlite3.Row):
|
|
||||||
return {k: obj[k] for k in obj.keys()}
|
|
||||||
return obj
|
|
||||||
|
|
||||||
|
|
||||||
def megajson(obj):
|
|
||||||
return json.dumps(obj, cls=MegaEncoder)
|
|
||||||
|
|
|
||||||
|
|
@ -1,477 +0,0 @@
|
||||||
<!-- @format -->
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<title>LNBits Wallet</title>
|
|
||||||
<meta
|
|
||||||
content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"
|
|
||||||
name="viewport"
|
|
||||||
/>
|
|
||||||
<!-- Date picker -->
|
|
||||||
<link
|
|
||||||
rel="stylesheet"
|
|
||||||
media="screen"
|
|
||||||
href="{{ url_for('static', filename='bootstrap/css/datepicker.min.css') }}"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- Bootstrap 3.3.2 -->
|
|
||||||
<link
|
|
||||||
rel="stylesheet"
|
|
||||||
media="screen"
|
|
||||||
href="{{ url_for('static', filename='bootstrap/css/bootstrap.min.css') }}"
|
|
||||||
/>
|
|
||||||
<!-- FontAwesome 4.3.0 -->
|
|
||||||
<link
|
|
||||||
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css"
|
|
||||||
rel="stylesheet"
|
|
||||||
type="text/css"
|
|
||||||
/>
|
|
||||||
<!-- Ionicons 2.0.0 -->
|
|
||||||
<link
|
|
||||||
href="https://code.ionicframework.com/ionicons/2.0.0/css/ionicons.min.css"
|
|
||||||
rel="stylesheet"
|
|
||||||
type="text/css"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- Theme style -->
|
|
||||||
<link
|
|
||||||
rel="stylesheet"
|
|
||||||
media="screen"
|
|
||||||
href="{{ url_for('static', filename='dist/css/AdminLTE.min.css') }}"
|
|
||||||
/>
|
|
||||||
<!-- AdminLTE Skins. Choose a skin from the css/skins
|
|
||||||
folder instead of downloading all of them to reduce the load. -->
|
|
||||||
|
|
||||||
<link
|
|
||||||
rel="stylesheet"
|
|
||||||
media="screen"
|
|
||||||
href="{{ url_for('static', filename='dist/css/skins/_all-skins.min.css') }}"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- Morris chart -->
|
|
||||||
<link
|
|
||||||
rel="stylesheet"
|
|
||||||
media="screen"
|
|
||||||
href="{{ url_for('static', filename='plugins/morris/morris.css') }}"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- jvectormap -->
|
|
||||||
<link
|
|
||||||
rel="stylesheet"
|
|
||||||
media="screen"
|
|
||||||
href="{{ url_for('static', filename='plugins/jvectormap/jquery-jvectormap-1.2.2.css') }}"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- bootstrap wysihtml5 - text editor -->
|
|
||||||
<link
|
|
||||||
rel="stylesheet"
|
|
||||||
media="screen"
|
|
||||||
href="{{ url_for('static', filename='plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css') }}"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
|
||||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
|
||||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.small-box > .small-box-footer {
|
|
||||||
text-align: left;
|
|
||||||
padding-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#loadingMessage {
|
|
||||||
text-align: center;
|
|
||||||
padding: 40px;
|
|
||||||
background-color: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
#canvas {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#output {
|
|
||||||
margin-top: 20px;
|
|
||||||
background: #eee;
|
|
||||||
padding: 10px;
|
|
||||||
padding-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#output div {
|
|
||||||
padding-bottom: 10px;
|
|
||||||
word-wrap: break-word;
|
|
||||||
}
|
|
||||||
|
|
||||||
#noQRFound {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<!-- jQuery 2.1.3 -->
|
|
||||||
<script src="{{ url_for('static', filename='plugins/jQuery/jQuery-2.1.3.min.js') }}"></script>
|
|
||||||
<!-- jQuery UI 1.11.2 -->
|
|
||||||
<script
|
|
||||||
src="https://code.jquery.com/ui/1.11.2/jquery-ui.min.js"
|
|
||||||
type="text/javascript"
|
|
||||||
></script>
|
|
||||||
<!-- Resolve conflict in jQuery UI tooltip with Bootstrap tooltip -->
|
|
||||||
<script>
|
|
||||||
$.widget.bridge('uibutton', $.ui.button)
|
|
||||||
</script>
|
|
||||||
<!-- Datepicker 3.3.2 JS -->
|
|
||||||
<script
|
|
||||||
src="{{ url_for('static', filename='bootstrap/js/datepicker.min.js') }}"
|
|
||||||
type="text/javascript"
|
|
||||||
></script>
|
|
||||||
|
|
||||||
<!-- Bootstrap 3.3.2 JS -->
|
|
||||||
<script
|
|
||||||
src="{{ url_for('static', filename='bootstrap/js/bootstrap.min.js') }}"
|
|
||||||
type="text/javascript"
|
|
||||||
></script>
|
|
||||||
<!-- Morris.js charts -->
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
|
|
||||||
<script
|
|
||||||
src="{{ url_for('static', filename='plugins/morris/morris.min.js') }}"
|
|
||||||
type="text/javascript"
|
|
||||||
></script>
|
|
||||||
<!-- Sparkline -->
|
|
||||||
<script
|
|
||||||
src="{{ url_for('static', filename='plugins/sparkline/jquery.sparkline.min.js') }}"
|
|
||||||
type="text/javascript"
|
|
||||||
></script>
|
|
||||||
<!-- jvectormap -->
|
|
||||||
<script
|
|
||||||
src="{{ url_for('static', filename='plugins/jvectormap/jquery-jvectormap-1.2.2.min.js') }}"
|
|
||||||
type="text/javascript"
|
|
||||||
></script>
|
|
||||||
<script
|
|
||||||
src="{{ url_for('static', filename='plugins/jvectormap/jquery-jvectormap-world-mill-en.js') }}"
|
|
||||||
type="text/javascript"
|
|
||||||
></script>
|
|
||||||
<!-- jQuery Knob Chart -->
|
|
||||||
<script
|
|
||||||
src="{{ url_for('static', filename='plugins/knob/jquery.knob.js') }}"
|
|
||||||
type="text/javascript"
|
|
||||||
></script>
|
|
||||||
<!-- Bootstrap WYSIHTML5 -->
|
|
||||||
<script
|
|
||||||
src="{{ url_for('static', filename='plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js') }}"
|
|
||||||
type="text/javascript"
|
|
||||||
></script>
|
|
||||||
<!-- Slimscroll -->
|
|
||||||
<script
|
|
||||||
src="{{ url_for('static', filename='plugins/slimScroll/jquery.slimscroll.min.js') }}"
|
|
||||||
type="text/javascript"
|
|
||||||
></script>
|
|
||||||
<!-- FastClick -->
|
|
||||||
<script src="{{ url_for('static', filename='plugins/fastclick/fastclick.min.js') }}"></script>
|
|
||||||
<!-- AdminLTE App -->
|
|
||||||
<script
|
|
||||||
src="{{ url_for('static', filename='dist/js/app.min.js') }}"
|
|
||||||
type="text/javascript"
|
|
||||||
></script>
|
|
||||||
|
|
||||||
<!-- AdminLTE dashboard demo (This is only for demo purposes) -->
|
|
||||||
<script
|
|
||||||
src="{{ url_for('static', filename='dist/js/pages/dashboard.js') }}"
|
|
||||||
type="text/javascript"
|
|
||||||
></script>
|
|
||||||
|
|
||||||
<!-- AdminLTE for demo purposes -->
|
|
||||||
<script
|
|
||||||
src="{{ url_for('static', filename='dist/js/demo.js') }}"
|
|
||||||
type="text/javascript"
|
|
||||||
></script>
|
|
||||||
|
|
||||||
<script
|
|
||||||
src="{{ url_for('static', filename='plugins/datatables/jquery.dataTables.js') }}"
|
|
||||||
type="text/javascript"
|
|
||||||
></script>
|
|
||||||
<link
|
|
||||||
rel="stylesheet"
|
|
||||||
href="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.css"
|
|
||||||
/>
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.min.js"></script>
|
|
||||||
<script
|
|
||||||
src="{{ url_for('static', filename='plugins/jscam/JS.js') }}"
|
|
||||||
type="text/javascript"
|
|
||||||
></script>
|
|
||||||
<script
|
|
||||||
src="{{ url_for('static', filename='plugins/jscam/qrcode.min.js') }}"
|
|
||||||
type="text/javascript"
|
|
||||||
></script>
|
|
||||||
<script
|
|
||||||
src="{{ url_for('static', filename='plugins/bolt11/decoder.js') }}"
|
|
||||||
type="text/javascript"
|
|
||||||
></script>
|
|
||||||
<script
|
|
||||||
src="{{ url_for('static', filename='plugins/bolt11/utils.js') }}"
|
|
||||||
type="text/javascript"
|
|
||||||
></script>
|
|
||||||
<style>
|
|
||||||
|
|
||||||
//GOOFY CSS HACK TO GO DARK
|
|
||||||
|
|
||||||
.skin-blue .wrapper {
|
|
||||||
background:
|
|
||||||
#1f2234;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.skin-blue .sidebar-menu > li.active > a {
|
|
||||||
color: #fff;
|
|
||||||
background:#1f2234;
|
|
||||||
border-left-color:#8964a9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.skin-blue .main-header .navbar {
|
|
||||||
background-color:
|
|
||||||
#2e507d;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content-wrapper, .right-side {
|
|
||||||
background-color:
|
|
||||||
#1f2234;
|
|
||||||
}
|
|
||||||
.skin-blue .main-header .logo {
|
|
||||||
background-color:
|
|
||||||
#1f2234;
|
|
||||||
color:
|
|
||||||
#fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.skin-blue .sidebar-menu > li.header {
|
|
||||||
color:
|
|
||||||
#4b646f;
|
|
||||||
background:
|
|
||||||
#1f2234;
|
|
||||||
}
|
|
||||||
.skin-blue .wrapper, .skin-blue .main-sidebar, .skin-blue .left-side {
|
|
||||||
background:
|
|
||||||
#1f2234;
|
|
||||||
}
|
|
||||||
|
|
||||||
.skin-blue .sidebar-menu > li > .treeview-menu {
|
|
||||||
margin: 0 1px;
|
|
||||||
background:
|
|
||||||
#1f2234;
|
|
||||||
}
|
|
||||||
|
|
||||||
.skin-blue .sidebar-menu > li > a {
|
|
||||||
border-left: 3px solid
|
|
||||||
transparent;
|
|
||||||
margin-right: 1px;
|
|
||||||
}
|
|
||||||
.skin-blue .sidebar-menu > li > a:hover, .skin-blue .sidebar-menu > li.active > a {
|
|
||||||
|
|
||||||
color: #fff;
|
|
||||||
background:#3e355a;
|
|
||||||
border-left-color:#8964a9;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.skin-blue .main-header .logo:hover {
|
|
||||||
background:
|
|
||||||
#3e355a;
|
|
||||||
}
|
|
||||||
|
|
||||||
.skin-blue .main-header .navbar .sidebar-toggle:hover {
|
|
||||||
background-color:
|
|
||||||
#3e355a;
|
|
||||||
}
|
|
||||||
.main-footer {
|
|
||||||
background-color: #1f2234;
|
|
||||||
padding: 15px;
|
|
||||||
color: #fff;
|
|
||||||
border-top: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.skin-blue .main-header .navbar {
|
|
||||||
background-color: #1f2234;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-red, .callout.callout-danger, .alert-danger, .alert-error, .label-danger, .modal-danger .modal-body {
|
|
||||||
background-color:
|
|
||||||
#1f2234 !important;
|
|
||||||
}
|
|
||||||
.alert-danger, .alert-error {
|
|
||||||
|
|
||||||
border-color: #fff;
|
|
||||||
border: 1px solid
|
|
||||||
|
|
||||||
#fff;
|
|
||||||
border-radius: 7px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.skin-blue .main-header .navbar .nav > li > a:hover, .skin-blue .main-header .navbar .nav > li > a:active, .skin-blue .main-header .navbar .nav > li > a:focus, .skin-blue .main-header .navbar .nav .open > a, .skin-blue .main-header .navbar .nav .open > a:hover, .skin-blue .main-header .navbar .nav .open > a:focus {
|
|
||||||
color:
|
|
||||||
#f6f6f6;
|
|
||||||
background-color: #3e355a;
|
|
||||||
}
|
|
||||||
.bg-aqua, .callout.callout-info, .alert-info, .label-info, .modal-info .modal-body {
|
|
||||||
background-color:
|
|
||||||
#3e355a !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.box {
|
|
||||||
position: relative;
|
|
||||||
border-radius: 3px;
|
|
||||||
background-color: #333646;
|
|
||||||
border-top: 3px solid #8964a9;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
width: 100%;
|
|
||||||
|
|
||||||
}
|
|
||||||
.table-striped > tbody > tr:nth-of-type(2n+1) {
|
|
||||||
background-color:
|
|
||||||
#333646;
|
|
||||||
}
|
|
||||||
|
|
||||||
.box-header {
|
|
||||||
color: #fff;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.box.box-danger {
|
|
||||||
border-top-color: #8964a9;
|
|
||||||
}
|
|
||||||
.box.box-primary {
|
|
||||||
border-top-color: #8964a9;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: #8964a9;
|
|
||||||
}
|
|
||||||
.box-header.with-border {
|
|
||||||
border-bottom: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover, a:active, a:focus {
|
|
||||||
outline: none;
|
|
||||||
text-decoration: none;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
// .modal.in .modal-dialog{
|
|
||||||
// color:#000;
|
|
||||||
// }
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
|
|
||||||
background-color:#333646;
|
|
||||||
color: #fff;
|
|
||||||
|
|
||||||
}
|
|
||||||
.box-footer {
|
|
||||||
|
|
||||||
border-top: none;
|
|
||||||
|
|
||||||
background-color:
|
|
||||||
#333646;
|
|
||||||
}
|
|
||||||
.modal-footer {
|
|
||||||
|
|
||||||
border-top: none;
|
|
||||||
|
|
||||||
}
|
|
||||||
.modal-content {
|
|
||||||
|
|
||||||
background-color:
|
|
||||||
#333646;
|
|
||||||
}
|
|
||||||
.modal.in .modal-dialog {
|
|
||||||
|
|
||||||
background-color: #333646;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.h1 .small, .h1 small, .h2 .small, .h2 small, .h3 .small, .h3 small, .h4 .small, .h4 small, .h5 .small, .h5 small, .h6 .small, .h6 small, h1 .small, h1 small, h2 .small, h2 small, h3 .small, h3 small, h4 .small, h4 small, h5 .small, h5 small, h6 .small, h6 small {
|
|
||||||
font-weight: 400;
|
|
||||||
line-height: 1;
|
|
||||||
color:
|
|
||||||
#fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
|
|
||||||
background-color: #1f2234;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body class="skin-blue">
|
|
||||||
<div class="wrapper">
|
|
||||||
<header class="main-header">
|
|
||||||
<!-- Logo -->
|
|
||||||
<a href="{{ url_for('core.home') }}" class="logo"><b style="color: #8964a9;">LN</b>bits</a>
|
|
||||||
<!-- Header Navbar: style can be found in header.less -->
|
|
||||||
<nav class="navbar navbar-static-top" role="navigation">
|
|
||||||
<!-- Sidebar toggle button-->
|
|
||||||
<a
|
|
||||||
href="#"
|
|
||||||
class="sidebar-toggle"
|
|
||||||
data-toggle="offcanvas"
|
|
||||||
role="button"
|
|
||||||
>
|
|
||||||
<span class="sr-only">Toggle navigation</span>
|
|
||||||
</a>
|
|
||||||
<div class="navbar-custom-menu">
|
|
||||||
<ul class="nav navbar-nav">
|
|
||||||
<!-- Messages: style can be found in dropdown.less-->
|
|
||||||
<li class="dropdown messages-menu">
|
|
||||||
{% block messages %}{% endblock %}
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<!-- Left side column. contains the logo and sidebar -->
|
|
||||||
<aside class="main-sidebar">
|
|
||||||
<!-- sidebar: style can be found in sidebar.less -->
|
|
||||||
<section class="sidebar">
|
|
||||||
<!-- Sidebar user panel -->
|
|
||||||
|
|
||||||
<!-- /.search form -->
|
|
||||||
<!-- sidebar menu: : style can be found in sidebar.less -->
|
|
||||||
<ul class="sidebar-menu">
|
|
||||||
<li class="header">MENU</li>
|
|
||||||
{% block menuitems %}{% endblock %}
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
<!-- /.sidebar -->
|
|
||||||
</aside>
|
|
||||||
|
|
||||||
{% block body %}{% endblock %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<footer class="main-footer">
|
|
||||||
<div class="pull-right hidden-xs">
|
|
||||||
<b>BETA</b>
|
|
||||||
</div>
|
|
||||||
<strong
|
|
||||||
>Learn more about LNbits
|
|
||||||
<a href="https://github.com/arcbtc/lnbits"
|
|
||||||
>https://github.com/arcbtc/lnbits</a
|
|
||||||
></strong
|
|
||||||
>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
<script
|
|
||||||
src="{{ url_for('static', filename='app.js') }}"
|
|
||||||
type="text/javascript"
|
|
||||||
></script>
|
|
||||||
</html>
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue