diff --git a/lnbits/app.py b/lnbits/app.py index 64e4ba4e1..ca7701677 100644 --- a/lnbits/app.py +++ b/lnbits/app.py @@ -84,18 +84,19 @@ def create_app(config_object="lnbits.settings") -> FastAPI: def check_funding_source(app: FastAPI) -> None: @app.on_event("startup") async def check_wallet_status(): - error_message, balance = await WALLET.status() - if error_message: + while True: + error_message, balance = await WALLET.status() + if not error_message: + break warnings.warn( f" × The backend for {WALLET.__class__.__name__} isn't working properly: '{error_message}'", RuntimeWarning, ) - - sys.exit(4) - else: - print( - f" ✔️ {WALLET.__class__.__name__} seems to be connected and with a balance of {balance} msat." - ) + print("Retrying connection to backend in 5 seconds...") + await asyncio.sleep(5) + print( + f" ✔️ {WALLET.__class__.__name__} seems to be connected and with a balance of {balance} msat." + ) def register_routes(app: FastAPI) -> None: diff --git a/lnbits/core/views/api.py b/lnbits/core/views/api.py index 4ece3288e..c264de1a8 100644 --- a/lnbits/core/views/api.py +++ b/lnbits/core/views/api.py @@ -24,24 +24,24 @@ from lnbits.decorators import ( WalletTypeInfo, get_key_type, ) -from lnbits.helpers import url_for +from lnbits.helpers import url_for, urlsafe_short_hash from lnbits.requestvars import g +from lnbits.settings import LNBITS_ADMIN_USERS, LNBITS_SITE_TITLE from lnbits.utils.exchange_rates import ( currencies, fiat_amount_as_satoshis, satoshis_amount_as_fiat, ) -from lnbits.settings import LNBITS_SITE_TITLE from .. import core_app, db from ..crud import ( + create_payment, get_payments, get_standalone_payment, - save_balance_check, - update_wallet, - create_payment, get_wallet, + save_balance_check, update_payment_status, + update_wallet, ) from ..services import ( InvoiceFailure, @@ -52,8 +52,6 @@ from ..services import ( perform_lnurlauth, ) from ..tasks import api_invoice_listeners -from lnbits.settings import LNBITS_ADMIN_USERS -from lnbits.helpers import urlsafe_short_hash @core_app.get("/api/v1/wallet") @@ -503,12 +501,13 @@ async def api_lnurlscan(code: str): @core_app.post("/api/v1/payments/decode") async def api_payments_decode(data: str = Query(None)): + print(data) try: - if data["data"][:5] == "LNURL": - url = lnurl.decode(data["data"]) + if data[:5] == "LNURL": + url = lnurl.decode(data) return {"domain": url} else: - invoice = bolt11.decode(data["data"]) + invoice = bolt11.decode(data) return { "payment_hash": invoice.payment_hash, "amount_msat": invoice.amount_msat, diff --git a/lnbits/extensions/copilot/crud.py b/lnbits/extensions/copilot/crud.py index e456334ea..d0da044eb 100644 --- a/lnbits/extensions/copilot/crud.py +++ b/lnbits/extensions/copilot/crud.py @@ -88,7 +88,7 @@ async def get_copilot(copilot_id: str) -> Copilots: async def get_copilots(user: str) -> List[Copilots]: rows = await db.fetchall( - "SELECT * FROM copilot.newer_copilots WHERE user = ?", (user,) + 'SELECT * FROM copilot.newer_copilots WHERE "user" = ?', (user,) ) return [Copilots(**row) for row in rows] diff --git a/lnbits/extensions/events/crud.py b/lnbits/extensions/events/crud.py index 9c6e5c6b1..9e04476d3 100644 --- a/lnbits/extensions/events/crud.py +++ b/lnbits/extensions/events/crud.py @@ -76,7 +76,7 @@ async def delete_ticket(payment_hash: str) -> None: async def delete_event_tickets(event_id: str) -> None: - await db.execute("DELETE FROM events.tickets WHERE event = ?", (event_id,)) + await db.execute("DELETE FROM events.ticket WHERE event = ?", (event_id,)) # EVENTS diff --git a/lnbits/extensions/jukebox/crud.py b/lnbits/extensions/jukebox/crud.py index 14dc4760e..caaac7e56 100644 --- a/lnbits/extensions/jukebox/crud.py +++ b/lnbits/extensions/jukebox/crud.py @@ -12,7 +12,7 @@ async def create_jukebox( juke_id = urlsafe_short_hash() result = await db.execute( """ - INSERT INTO jukebox.jukebox (id, user, title, wallet, sp_user, sp_secret, sp_access_token, sp_refresh_token, sp_device, sp_playlists, price, profit) + INSERT INTO jukebox.jukebox (id, "user", title, wallet, sp_user, sp_secret, sp_access_token, sp_refresh_token, sp_device, sp_playlists, price, profit) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) """, ( @@ -41,6 +41,7 @@ async def update_jukebox( q = ", ".join([f"{field[0]} = ?" for field in data]) items = [f"{field[1]}" for field in data] items.append(juke_id) + q = q.replace("user", '"user"', 1) # hack to make user be "user"! await db.execute(f"UPDATE jukebox.jukebox SET {q} WHERE id = ?", (items)) row = await db.fetchone("SELECT * FROM jukebox.jukebox WHERE id = ?", (juke_id,)) return Jukebox(**row) if row else None @@ -57,11 +58,11 @@ async def get_jukebox_by_user(user: str) -> Optional[Jukebox]: async def get_jukeboxs(user: str) -> List[Jukebox]: - rows = await db.fetchall("SELECT * FROM jukebox.jukebox WHERE user = ?", (user,)) + rows = await db.fetchall('SELECT * FROM jukebox.jukebox WHERE "user" = ?', (user,)) for row in rows: if row.sp_playlists == None: await delete_jukebox(row.id) - rows = await db.fetchall("SELECT * FROM jukebox.jukebox WHERE user = ?", (user,)) + rows = await db.fetchall('SELECT * FROM jukebox.jukebox WHERE "user" = ?', (user,)) return [Jukebox(**row) for row in rows] diff --git a/lnbits/extensions/jukebox/views_api.py b/lnbits/extensions/jukebox/views_api.py index 421ebf3aa..3ba8cbf25 100644 --- a/lnbits/extensions/jukebox/views_api.py +++ b/lnbits/extensions/jukebox/views_api.py @@ -75,7 +75,6 @@ async def api_check_credentials_check( juke_id: str = Query(None), wallet: WalletTypeInfo = Depends(require_admin_key) ): jukebox = await get_jukebox(juke_id) - return jukebox @@ -442,7 +441,7 @@ async def api_get_jukebox_currently( token = await api_get_token(juke_id) if token == False: raise HTTPException( - status_code=HTTPStatus.FORBIDDEN, detail="INvoice not paid" + status_code=HTTPStatus.FORBIDDEN, detail="Invoice not paid" ) elif retry: raise HTTPException( @@ -456,5 +455,5 @@ async def api_get_jukebox_currently( ) except: raise HTTPException( - status_code=HTTPStatus.NOT_FOUND, detail="Something went wrong" + status_code=HTTPStatus.NOT_FOUND, detail="Something went wrong, or no song is playing yet" ) diff --git a/lnbits/extensions/lnticket/templates/lnticket/index.html b/lnbits/extensions/lnticket/templates/lnticket/index.html index 1607925b5..6572d98a8 100644 --- a/lnbits/extensions/lnticket/templates/lnticket/index.html +++ b/lnbits/extensions/lnticket/templates/lnticket/index.html @@ -117,9 +117,10 @@ {% raw %} @@ -136,9 +137,19 @@ :href="'mailto:' + props.row.email" > + + Click to show ticket + - {{ col.value }} + {{ col.label == "Ticket" ? col.value.length > 20 ? `${col.value.substring(0, 20)}...` : col.value : col.value }} @@ -249,6 +260,29 @@ + + + + {% raw %} + +

+ {{this.ticketDialog.data.name}} sent a ticket +

+
+ {{this.ticketDialog.data.email}} +
+ {{this.ticketDialog.data.date}} +
+ + +

{{this.ticketDialog.data.content}}

+
+ {% endraw %} + + + +
+
{% endblock %} {% block scripts %} {{ window_vars(user) }}