initial
Added bunch tiles, more to add
|
@ -23,11 +23,11 @@
|
|||
>
|
||||
<q-card>
|
||||
<q-card-section>
|
||||
<q-icon
|
||||
:name="extension.icon"
|
||||
color="grey-5"
|
||||
style="font-size: 4rem"
|
||||
></q-icon>
|
||||
<q-img
|
||||
:src="extension.tile"
|
||||
spinner-color="white"
|
||||
style="max-width:64px"
|
||||
></q-img>
|
||||
{% raw %}
|
||||
<h5 class="q-mt-lg q-mb-xs">{{ extension.name }}</h5>
|
||||
<small>{{ extension.shortDescription }} </small>{% endraw %}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Bleskomat",
|
||||
"short_description": "Connect a Bleskomat ATM to an lnbits",
|
||||
"icon": "money",
|
||||
"tile": "./bleskomat/static/image/bleskomat.png",
|
||||
"contributors": ["chill117"]
|
||||
}
|
||||
|
|
BIN
lnbits/extensions/bleskomat/static/image/bleskomat.png
Normal file
After Width: | Height: | Size: 26 KiB |
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Bolt Cards",
|
||||
"short_description": "Self custody Bolt Cards with one time LNURLw",
|
||||
"icon": "payment",
|
||||
"tile": "./boltcards/static/image/boltcard.png",
|
||||
"contributors": ["iwarpbtc", "arcbtc", "leesalminen"]
|
||||
}
|
||||
|
|
BIN
lnbits/extensions/boltcards/static/image/boltcard.png
Normal file
After Width: | Height: | Size: 33 KiB |
|
@ -5,6 +5,7 @@ from fastapi import APIRouter
|
|||
from lnbits.db import Database
|
||||
from lnbits.helpers import template_renderer
|
||||
from lnbits.tasks import catch_everything_and_restart
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
|
||||
db = Database("ext_boltz")
|
||||
|
||||
|
@ -14,6 +15,13 @@ boltz_ext: APIRouter = APIRouter(prefix="/boltz", tags=["boltz"])
|
|||
def boltz_renderer():
|
||||
return template_renderer(["lnbits/extensions/boltz/templates"])
|
||||
|
||||
boltz_static_files = [
|
||||
{
|
||||
"path": "/boltz/static",
|
||||
"app": StaticFiles(directory="lnbits/extensions/boltz/static"),
|
||||
"name": "boltz_static",
|
||||
}
|
||||
]
|
||||
|
||||
from .tasks import check_for_pending_swaps, wait_for_paid_invoices
|
||||
from .views import * # noqa
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Boltz",
|
||||
"short_description": "Perform onchain/offchain swaps",
|
||||
"icon": "swap_horiz",
|
||||
"tile": "./boltz/static/image/boltz.png",
|
||||
"contributors": ["dni"]
|
||||
}
|
||||
|
|
BIN
lnbits/extensions/boltz/static/image/boltz.png
Normal file
After Width: | Height: | Size: 37 KiB |
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Cashu",
|
||||
"short_description": "Ecash mint and wallet",
|
||||
"icon": "account_balance",
|
||||
"tile": "./cashu/static/image/cashu.png",
|
||||
"contributors": ["calle", "vlad", "arcbtc"],
|
||||
"hidden": false
|
||||
}
|
||||
|
|
BIN
lnbits/extensions/cashu/static/image/cashu.png
Normal file
After Width: | Height: | Size: 23 KiB |
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Streamer Copilot",
|
||||
"short_description": "Video tips/animations/webhooks",
|
||||
"icon": "face",
|
||||
"tile": "/cashu/static/image/tile.png",
|
||||
"contributors": [
|
||||
"arcbtc"
|
||||
]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Discord Bot",
|
||||
"short_description": "Generate users and wallets",
|
||||
"icon": "person_add",
|
||||
"tile": "./discordbot/static/image/discordbot.png",
|
||||
"contributors": ["bitcoingamer21"]
|
||||
}
|
||||
|
|
BIN
lnbits/extensions/discordbot/static/image/discordbot.png
Normal file
After Width: | Height: | Size: 18 KiB |
|
@ -1,6 +1,7 @@
|
|||
import asyncio
|
||||
|
||||
from fastapi import APIRouter
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
|
||||
from lnbits.db import Database
|
||||
from lnbits.helpers import template_renderer
|
||||
|
@ -11,6 +12,14 @@ db = Database("ext_events")
|
|||
|
||||
events_ext: APIRouter = APIRouter(prefix="/events", tags=["Events"])
|
||||
|
||||
events_static_files = [
|
||||
{
|
||||
"path": "/events/static",
|
||||
"app": StaticFiles(packages=[("lnbits", "extensions/events/static")]),
|
||||
"name": "events_static",
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
def events_renderer():
|
||||
return template_renderer(["lnbits/extensions/events/templates"])
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Events",
|
||||
"short_description": "Sell and register event tickets",
|
||||
"icon": "local_activity",
|
||||
"tile": "./events/static/image/events.png",
|
||||
"contributors": ["benarc"]
|
||||
}
|
||||
|
|
BIN
lnbits/extensions/events/static/image/events.png
Normal file
After Width: | Height: | Size: 138 KiB |
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Build your own!!",
|
||||
"short_description": "Join us, make an extension",
|
||||
"icon": "info",
|
||||
"tile": "/cashu/static/image/tile.png",
|
||||
"contributors": ["github_username"]
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Gerty",
|
||||
"short_description": "Desktop bitcoin Assistant",
|
||||
"icon": "sentiment_satisfied",
|
||||
"tile": "./gerty/static/gerty.png",
|
||||
"contributors": ["arcbtc", "blackcoffeebtc"]
|
||||
}
|
||||
|
|
BIN
lnbits/extensions/gerty/static/gerty.png
Normal file
After Width: | Height: | Size: 93 KiB |
|
@ -1,4 +1,5 @@
|
|||
from fastapi import APIRouter
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
|
||||
from lnbits.db import Database
|
||||
from lnbits.helpers import template_renderer
|
||||
|
@ -11,5 +12,12 @@ hivemind_ext: APIRouter = APIRouter(prefix="/hivemind", tags=["hivemind"])
|
|||
def hivemind_renderer():
|
||||
return template_renderer(["lnbits/extensions/hivemind/templates"])
|
||||
|
||||
hivemind_static_files = [
|
||||
{
|
||||
"path": "/hivemind/static",
|
||||
"app": StaticFiles(packages=[("lnbits", "extensions/hivemind/static")]),
|
||||
"name": "hivemind_static",
|
||||
}
|
||||
]
|
||||
|
||||
from .views import * # noqa
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Hivemind",
|
||||
"short_description": "Make cheap talk expensive!",
|
||||
"icon": "batch_prediction",
|
||||
"tile": "./hivemind/static/image/hivemind.png",
|
||||
"contributors": ["fiatjaf"]
|
||||
}
|
||||
|
|
BIN
lnbits/extensions/hivemind/static/image/hivemind.png
Normal file
After Width: | Height: | Size: 13 KiB |
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Invoices",
|
||||
"short_description": "Create invoices for your clients.",
|
||||
"icon": "request_quote",
|
||||
"tile": "./invoices/static/image/invoices.png",
|
||||
"contributors": ["leesalminen"]
|
||||
}
|
||||
|
|
BIN
lnbits/extensions/invoices/static/image/invoices.png
Normal file
After Width: | Height: | Size: 9.5 KiB |
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Spotify Jukebox",
|
||||
"short_description": "Spotify jukebox middleware",
|
||||
"icon": "radio",
|
||||
"tile": "/cashu/static/image/tile.png",
|
||||
"contributors": ["benarc"]
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "DJ Livestream",
|
||||
"short_description": "Sell tracks and split revenue (lnurl-pay)",
|
||||
"icon": "speaker",
|
||||
"tile": "./livestream/static/image/livestream.png",
|
||||
"contributors": [
|
||||
"fiatjaf",
|
||||
"cryptograffiti"
|
||||
|
|
BIN
lnbits/extensions/livestream/static/image/livestream.png
Normal file
After Width: | Height: | Size: 190 KiB |
|
@ -1,6 +1,7 @@
|
|||
import asyncio
|
||||
|
||||
from fastapi import APIRouter
|
||||
from starlette.staticfiles import StaticFiles
|
||||
|
||||
from lnbits.db import Database
|
||||
from lnbits.helpers import template_renderer
|
||||
|
@ -10,6 +11,13 @@ db = Database("ext_lnaddress")
|
|||
|
||||
lnaddress_ext: APIRouter = APIRouter(prefix="/lnaddress", tags=["lnaddress"])
|
||||
|
||||
lnaddress_static_files = [
|
||||
{
|
||||
"path": "/lnaddress/static",
|
||||
"app": StaticFiles(directory="lnbits/extensions/lnaddress/static"),
|
||||
"name": "lnaddress_static",
|
||||
}
|
||||
]
|
||||
|
||||
def lnaddress_renderer():
|
||||
return template_renderer(["lnbits/extensions/lnaddress/templates"])
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Lightning Address",
|
||||
"short_description": "Sell LN addresses for your domain",
|
||||
"icon": "alternate_email",
|
||||
"tile": "./lnaddress/static/image/lnaddress.png",
|
||||
"contributors": ["talvasconcelos"]
|
||||
}
|
||||
|
|
BIN
lnbits/extensions/lnaddress/static/image/lnaddress.png
Normal file
After Width: | Height: | Size: 27 KiB |
|
@ -1,4 +1,5 @@
|
|||
from fastapi import APIRouter
|
||||
from starlette.staticfiles import StaticFiles
|
||||
|
||||
from lnbits.db import Database
|
||||
from lnbits.helpers import template_renderer
|
||||
|
@ -7,6 +8,14 @@ db = Database("ext_lndhub")
|
|||
|
||||
lndhub_ext: APIRouter = APIRouter(prefix="/lndhub", tags=["lndhub"])
|
||||
|
||||
lndhub_static_files = [
|
||||
{
|
||||
"path": "/lndhub/static",
|
||||
"app": StaticFiles(directory="lnbits/extensions/lndhub/static"),
|
||||
"name": "lndhub_static",
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
def lndhub_renderer():
|
||||
return template_renderer(["lnbits/extensions/lndhub/templates"])
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "LndHub",
|
||||
"short_description": "Access lnbits from BlueWallet or Zeus",
|
||||
"icon": "navigation",
|
||||
"tile": "./lndhub/static/image/lndhub.png",
|
||||
"contributors": ["fiatjaf"]
|
||||
}
|
||||
|
|
BIN
lnbits/extensions/lndhub/static/image/lndhub.png
Normal file
After Width: | Height: | Size: 66 KiB |
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Support Tickets",
|
||||
"short_description": "LN support ticket system",
|
||||
"icon": "contact_support",
|
||||
"tile": "/cashu/static/image/tile.png",
|
||||
"contributors": ["benarc"]
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "LNURLDevice",
|
||||
"short_description": "For offline LNURL devices",
|
||||
"icon": "point_of_sale",
|
||||
"tile": "/cashu/static/image/tile.png",
|
||||
"contributors": ["arcbtc"]
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "LNURLp",
|
||||
"short_description": "Make reusable LNURL pay links",
|
||||
"icon": "receipt",
|
||||
"tile": "/cashu/static/image/tile.png",
|
||||
"contributors": [
|
||||
"arcbtc",
|
||||
"eillarra",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Nostr NIP-5",
|
||||
"short_description": "Verify addresses for Nostr NIP-5",
|
||||
"icon": "request_quote",
|
||||
"tile": "./nostrnip5/static/image/nostrnip5.png",
|
||||
"contributors": ["leesalminen"]
|
||||
}
|
||||
|
|
BIN
lnbits/extensions/nostrnip5/static/image/nostrnip5.png
Normal file
After Width: | Height: | Size: 20 KiB |
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "OfflineShop",
|
||||
"short_description": "Receive payments for products offline!",
|
||||
"icon": "nature_people",
|
||||
"tile": "/cashu/static/image/tile.png",
|
||||
"contributors": [
|
||||
"fiatjaf"
|
||||
]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Paywall",
|
||||
"short_description": "Create paywalls for content",
|
||||
"icon": "policy",
|
||||
"tile": "/cashu/static/image/tile.png",
|
||||
"contributors": ["eillarra"]
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Sats Dice",
|
||||
"short_description": "LNURL Satoshi dice",
|
||||
"icon": "casino",
|
||||
"tile": "/cashu/static/image/tile.png",
|
||||
"contributors": ["arcbtc"]
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "SatsPay Server",
|
||||
"short_description": "Create onchain and LN charges",
|
||||
"icon": "payment",
|
||||
"tile": "/cashu/static/image/tile.png",
|
||||
"contributors": ["arcbtc"]
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Scrub",
|
||||
"short_description": "Pass payments to LNURLp/LNaddress",
|
||||
"icon": "send",
|
||||
"tile": "/cashu/static/image/tile.png",
|
||||
"contributors": ["arcbtc", "talvasconcelos"]
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Split Payments",
|
||||
"short_description": "Split incoming payments across wallets",
|
||||
"icon": "call_split",
|
||||
"tile": "/cashu/static/image/tile.png",
|
||||
"contributors": ["fiatjaf", "cryptograffiti"]
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Stream Alerts",
|
||||
"short_description": "Bitcoin donations in stream alerts",
|
||||
"icon": "notifications_active",
|
||||
"tile": "/cashu/static/image/tile.png",
|
||||
"contributors": ["Fittiboy"]
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Subdomains",
|
||||
"short_description": "Sell subdomains of your domain",
|
||||
"icon": "domain",
|
||||
"tile": "/cashu/static/image/tile.png",
|
||||
"contributors": ["grmkris"]
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Tip Jar",
|
||||
"short_description": "Accept Bitcoin donations, with messages attached!",
|
||||
"icon": "favorite",
|
||||
"tile": "/cashu/static/image/tile.png",
|
||||
"contributors": ["Fittiboy"]
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "TPoS",
|
||||
"short_description": "A shareable PoS terminal!",
|
||||
"icon": "dialpad",
|
||||
"tile": "/cashu/static/image/tile.png",
|
||||
"contributors": ["talvasconcelos", "arcbtc", "leesalminen"]
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "User Manager",
|
||||
"short_description": "Generate users and wallets",
|
||||
"icon": "person_add",
|
||||
"tile": "/cashu/static/image/tile.png",
|
||||
"contributors": ["benarc"]
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Onchain Wallet",
|
||||
"short_description": "Onchain watch only wallets",
|
||||
"icon": "visibility",
|
||||
"tile": "/cashu/static/image/tile.png",
|
||||
"contributors": [
|
||||
"arcbtc",
|
||||
"motorina0"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "LNURLw",
|
||||
"short_description": "Make LNURL withdraw links",
|
||||
"icon": "crop_free",
|
||||
"tile": "/cashu/static/image/tile.png",
|
||||
"contributors": ["arcbtc", "eillarra"]
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ class Extension(NamedTuple):
|
|||
is_admin_only: bool
|
||||
name: Optional[str] = None
|
||||
short_description: Optional[str] = None
|
||||
icon: Optional[str] = None
|
||||
tile: Optional[str] = None
|
||||
contributors: Optional[List[str]] = None
|
||||
hidden: bool = False
|
||||
migration_module: Optional[str] = None
|
||||
|
@ -63,7 +63,7 @@ class ExtensionManager:
|
|||
is_admin_only,
|
||||
config.get("name"),
|
||||
config.get("short_description"),
|
||||
config.get("icon"),
|
||||
config.get("tile"),
|
||||
config.get("contributors"),
|
||||
config.get("hidden") or False,
|
||||
config.get("migration_module"),
|
||||
|
|
|
@ -126,7 +126,7 @@ window.LNbits = {
|
|||
'isAdminOnly',
|
||||
'name',
|
||||
'shortDescription',
|
||||
'icon',
|
||||
'tile',
|
||||
'contributors',
|
||||
'hidden'
|
||||
],
|
||||
|
|
|
@ -118,12 +118,13 @@ Vue.component('lnbits-extension-list', {
|
|||
:active="extension.isActive"
|
||||
tag="a" :href="[extension.url, '?usr=', user.id].join('')">
|
||||
<q-item-section side>
|
||||
<q-avatar size="md"
|
||||
:color="(extension.isActive)
|
||||
? (($q.dark.isActive) ? 'primary' : 'primary')
|
||||
: 'grey-5'">
|
||||
<q-icon :name="extension.icon" :size="($q.dark.isActive) ? '21px' : '20px'"
|
||||
:color="($q.dark.isActive) ? 'blue-grey-10' : 'grey-3'"></q-icon>
|
||||
<q-avatar size="md">
|
||||
|
||||
<q-img
|
||||
:src="extension.tile"
|
||||
style="max-width:20px"
|
||||
></q-img>
|
||||
|
||||
</q-avatar>
|
||||
</q-item-section>
|
||||
<q-item-section>
|
||||
|
|